/*
    MANGO Multimedia Development Platform
    Copyright (C) 2012-2020 Twilight Finland 3D Oy Ltd. All rights reserved.
*/
#ifdef GLEXT_PROC

// ---------------------------------------------------------------------------------
// GL_VERSION_1_0
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLCULLFACEPROC, glCullFace);
GLEXT_PROC(PFNGLFRONTFACEPROC, glFrontFace);
GLEXT_PROC(PFNGLHINTPROC, glHint);
GLEXT_PROC(PFNGLLINEWIDTHPROC, glLineWidth);
GLEXT_PROC(PFNGLPOINTSIZEPROC, glPointSize);
GLEXT_PROC(PFNGLPOLYGONMODEPROC, glPolygonMode);
GLEXT_PROC(PFNGLSCISSORPROC, glScissor);
GLEXT_PROC(PFNGLTEXPARAMETERFPROC, glTexParameterf);
GLEXT_PROC(PFNGLTEXPARAMETERFVPROC, glTexParameterfv);
GLEXT_PROC(PFNGLTEXPARAMETERIPROC, glTexParameteri);
GLEXT_PROC(PFNGLTEXPARAMETERIVPROC, glTexParameteriv);
GLEXT_PROC(PFNGLTEXIMAGE1DPROC, glTexImage1D);
GLEXT_PROC(PFNGLTEXIMAGE2DPROC, glTexImage2D);
GLEXT_PROC(PFNGLDRAWBUFFERPROC, glDrawBuffer);
GLEXT_PROC(PFNGLCLEARPROC, glClear);
GLEXT_PROC(PFNGLCLEARCOLORPROC, glClearColor);
GLEXT_PROC(PFNGLCLEARSTENCILPROC, glClearStencil);
GLEXT_PROC(PFNGLCLEARDEPTHPROC, glClearDepth);
GLEXT_PROC(PFNGLSTENCILMASKPROC, glStencilMask);
GLEXT_PROC(PFNGLCOLORMASKPROC, glColorMask);
GLEXT_PROC(PFNGLDEPTHMASKPROC, glDepthMask);
GLEXT_PROC(PFNGLDISABLEPROC, glDisable);
GLEXT_PROC(PFNGLENABLEPROC, glEnable);
GLEXT_PROC(PFNGLFINISHPROC, glFinish);
GLEXT_PROC(PFNGLFLUSHPROC, glFlush);
GLEXT_PROC(PFNGLBLENDFUNCPROC, glBlendFunc);
GLEXT_PROC(PFNGLLOGICOPPROC, glLogicOp);
GLEXT_PROC(PFNGLSTENCILFUNCPROC, glStencilFunc);
GLEXT_PROC(PFNGLSTENCILOPPROC, glStencilOp);
GLEXT_PROC(PFNGLDEPTHFUNCPROC, glDepthFunc);
GLEXT_PROC(PFNGLPIXELSTOREFPROC, glPixelStoref);
GLEXT_PROC(PFNGLPIXELSTOREIPROC, glPixelStorei);
GLEXT_PROC(PFNGLREADBUFFERPROC, glReadBuffer);
GLEXT_PROC(PFNGLREADPIXELSPROC, glReadPixels);
GLEXT_PROC(PFNGLGETBOOLEANVPROC, glGetBooleanv);
GLEXT_PROC(PFNGLGETDOUBLEVPROC, glGetDoublev);
GLEXT_PROC(PFNGLGETERRORPROC, glGetError);
GLEXT_PROC(PFNGLGETFLOATVPROC, glGetFloatv);
GLEXT_PROC(PFNGLGETINTEGERVPROC, glGetIntegerv);
GLEXT_PROC(PFNGLGETSTRINGPROC, glGetString);
GLEXT_PROC(PFNGLGETTEXIMAGEPROC, glGetTexImage);
GLEXT_PROC(PFNGLGETTEXPARAMETERFVPROC, glGetTexParameterfv);
GLEXT_PROC(PFNGLGETTEXPARAMETERIVPROC, glGetTexParameteriv);
GLEXT_PROC(PFNGLGETTEXLEVELPARAMETERFVPROC, glGetTexLevelParameterfv);
GLEXT_PROC(PFNGLGETTEXLEVELPARAMETERIVPROC, glGetTexLevelParameteriv);
GLEXT_PROC(PFNGLISENABLEDPROC, glIsEnabled);
GLEXT_PROC(PFNGLDEPTHRANGEPROC, glDepthRange);
GLEXT_PROC(PFNGLVIEWPORTPROC, glViewport);

// ---------------------------------------------------------------------------------
// GL_VERSION_1_1
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLDRAWARRAYSPROC, glDrawArrays);
GLEXT_PROC(PFNGLDRAWELEMENTSPROC, glDrawElements);
GLEXT_PROC(PFNGLGETPOINTERVPROC, glGetPointerv);
GLEXT_PROC(PFNGLPOLYGONOFFSETPROC, glPolygonOffset);
GLEXT_PROC(PFNGLCOPYTEXIMAGE1DPROC, glCopyTexImage1D);
GLEXT_PROC(PFNGLCOPYTEXIMAGE2DPROC, glCopyTexImage2D);
GLEXT_PROC(PFNGLCOPYTEXSUBIMAGE1DPROC, glCopyTexSubImage1D);
GLEXT_PROC(PFNGLCOPYTEXSUBIMAGE2DPROC, glCopyTexSubImage2D);
GLEXT_PROC(PFNGLTEXSUBIMAGE1DPROC, glTexSubImage1D);
GLEXT_PROC(PFNGLTEXSUBIMAGE2DPROC, glTexSubImage2D);
GLEXT_PROC(PFNGLBINDTEXTUREPROC, glBindTexture);
GLEXT_PROC(PFNGLDELETETEXTURESPROC, glDeleteTextures);
GLEXT_PROC(PFNGLGENTEXTURESPROC, glGenTextures);
GLEXT_PROC(PFNGLISTEXTUREPROC, glIsTexture);

// ---------------------------------------------------------------------------------
// GL_VERSION_1_2
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLDRAWRANGEELEMENTSPROC, glDrawRangeElements);
GLEXT_PROC(PFNGLTEXIMAGE3DPROC, glTexImage3D);
GLEXT_PROC(PFNGLTEXSUBIMAGE3DPROC, glTexSubImage3D);
GLEXT_PROC(PFNGLCOPYTEXSUBIMAGE3DPROC, glCopyTexSubImage3D);

// ---------------------------------------------------------------------------------
// GL_VERSION_1_3
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLACTIVETEXTUREPROC, glActiveTexture);
GLEXT_PROC(PFNGLSAMPLECOVERAGEPROC, glSampleCoverage);
GLEXT_PROC(PFNGLCOMPRESSEDTEXIMAGE3DPROC, glCompressedTexImage3D);
GLEXT_PROC(PFNGLCOMPRESSEDTEXIMAGE2DPROC, glCompressedTexImage2D);
GLEXT_PROC(PFNGLCOMPRESSEDTEXIMAGE1DPROC, glCompressedTexImage1D);
GLEXT_PROC(PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC, glCompressedTexSubImage3D);
GLEXT_PROC(PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC, glCompressedTexSubImage2D);
GLEXT_PROC(PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC, glCompressedTexSubImage1D);
GLEXT_PROC(PFNGLGETCOMPRESSEDTEXIMAGEPROC, glGetCompressedTexImage);

// ---------------------------------------------------------------------------------
// GL_VERSION_1_4
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLBLENDFUNCSEPARATEPROC, glBlendFuncSeparate);
GLEXT_PROC(PFNGLMULTIDRAWARRAYSPROC, glMultiDrawArrays);
GLEXT_PROC(PFNGLMULTIDRAWELEMENTSPROC, glMultiDrawElements);
GLEXT_PROC(PFNGLPOINTPARAMETERFPROC, glPointParameterf);
GLEXT_PROC(PFNGLPOINTPARAMETERFVPROC, glPointParameterfv);
GLEXT_PROC(PFNGLPOINTPARAMETERIPROC, glPointParameteri);
GLEXT_PROC(PFNGLPOINTPARAMETERIVPROC, glPointParameteriv);
GLEXT_PROC(PFNGLBLENDCOLORPROC, glBlendColor);
GLEXT_PROC(PFNGLBLENDEQUATIONPROC, glBlendEquation);

// ---------------------------------------------------------------------------------
// GL_VERSION_1_5
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLGENQUERIESPROC, glGenQueries);
GLEXT_PROC(PFNGLDELETEQUERIESPROC, glDeleteQueries);
GLEXT_PROC(PFNGLISQUERYPROC, glIsQuery);
GLEXT_PROC(PFNGLBEGINQUERYPROC, glBeginQuery);
GLEXT_PROC(PFNGLENDQUERYPROC, glEndQuery);
GLEXT_PROC(PFNGLGETQUERYIVPROC, glGetQueryiv);
GLEXT_PROC(PFNGLGETQUERYOBJECTIVPROC, glGetQueryObjectiv);
GLEXT_PROC(PFNGLGETQUERYOBJECTUIVPROC, glGetQueryObjectuiv);
GLEXT_PROC(PFNGLBINDBUFFERPROC, glBindBuffer);
GLEXT_PROC(PFNGLDELETEBUFFERSPROC, glDeleteBuffers);
GLEXT_PROC(PFNGLGENBUFFERSPROC, glGenBuffers);
GLEXT_PROC(PFNGLISBUFFERPROC, glIsBuffer);
GLEXT_PROC(PFNGLBUFFERDATAPROC, glBufferData);
GLEXT_PROC(PFNGLBUFFERSUBDATAPROC, glBufferSubData);
GLEXT_PROC(PFNGLGETBUFFERSUBDATAPROC, glGetBufferSubData);
GLEXT_PROC(PFNGLMAPBUFFERPROC, glMapBuffer);
GLEXT_PROC(PFNGLUNMAPBUFFERPROC, glUnmapBuffer);
GLEXT_PROC(PFNGLGETBUFFERPARAMETERIVPROC, glGetBufferParameteriv);
GLEXT_PROC(PFNGLGETBUFFERPOINTERVPROC, glGetBufferPointerv);

// ---------------------------------------------------------------------------------
// GL_VERSION_2_0
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLBLENDEQUATIONSEPARATEPROC, glBlendEquationSeparate);
GLEXT_PROC(PFNGLDRAWBUFFERSPROC, glDrawBuffers);
GLEXT_PROC(PFNGLSTENCILOPSEPARATEPROC, glStencilOpSeparate);
GLEXT_PROC(PFNGLSTENCILFUNCSEPARATEPROC, glStencilFuncSeparate);
GLEXT_PROC(PFNGLSTENCILMASKSEPARATEPROC, glStencilMaskSeparate);
GLEXT_PROC(PFNGLATTACHSHADERPROC, glAttachShader);
GLEXT_PROC(PFNGLBINDATTRIBLOCATIONPROC, glBindAttribLocation);
GLEXT_PROC(PFNGLCOMPILESHADERPROC, glCompileShader);
GLEXT_PROC(PFNGLCREATEPROGRAMPROC, glCreateProgram);
GLEXT_PROC(PFNGLCREATESHADERPROC, glCreateShader);
GLEXT_PROC(PFNGLDELETEPROGRAMPROC, glDeleteProgram);
GLEXT_PROC(PFNGLDELETESHADERPROC, glDeleteShader);
GLEXT_PROC(PFNGLDETACHSHADERPROC, glDetachShader);
GLEXT_PROC(PFNGLDISABLEVERTEXATTRIBARRAYPROC, glDisableVertexAttribArray);
GLEXT_PROC(PFNGLENABLEVERTEXATTRIBARRAYPROC, glEnableVertexAttribArray);
GLEXT_PROC(PFNGLGETACTIVEATTRIBPROC, glGetActiveAttrib);
GLEXT_PROC(PFNGLGETACTIVEUNIFORMPROC, glGetActiveUniform);
GLEXT_PROC(PFNGLGETATTACHEDSHADERSPROC, glGetAttachedShaders);
GLEXT_PROC(PFNGLGETATTRIBLOCATIONPROC, glGetAttribLocation);
GLEXT_PROC(PFNGLGETPROGRAMIVPROC, glGetProgramiv);
GLEXT_PROC(PFNGLGETPROGRAMINFOLOGPROC, glGetProgramInfoLog);
GLEXT_PROC(PFNGLGETSHADERIVPROC, glGetShaderiv);
GLEXT_PROC(PFNGLGETSHADERINFOLOGPROC, glGetShaderInfoLog);
GLEXT_PROC(PFNGLGETSHADERSOURCEPROC, glGetShaderSource);
GLEXT_PROC(PFNGLGETUNIFORMLOCATIONPROC, glGetUniformLocation);
GLEXT_PROC(PFNGLGETUNIFORMFVPROC, glGetUniformfv);
GLEXT_PROC(PFNGLGETUNIFORMIVPROC, glGetUniformiv);
GLEXT_PROC(PFNGLGETVERTEXATTRIBDVPROC, glGetVertexAttribdv);
GLEXT_PROC(PFNGLGETVERTEXATTRIBFVPROC, glGetVertexAttribfv);
GLEXT_PROC(PFNGLGETVERTEXATTRIBIVPROC, glGetVertexAttribiv);
GLEXT_PROC(PFNGLGETVERTEXATTRIBPOINTERVPROC, glGetVertexAttribPointerv);
GLEXT_PROC(PFNGLISPROGRAMPROC, glIsProgram);
GLEXT_PROC(PFNGLISSHADERPROC, glIsShader);
GLEXT_PROC(PFNGLLINKPROGRAMPROC, glLinkProgram);
GLEXT_PROC(PFNGLSHADERSOURCEPROC, glShaderSource);
GLEXT_PROC(PFNGLUSEPROGRAMPROC, glUseProgram);
GLEXT_PROC(PFNGLUNIFORM1FPROC, glUniform1f);
GLEXT_PROC(PFNGLUNIFORM2FPROC, glUniform2f);
GLEXT_PROC(PFNGLUNIFORM3FPROC, glUniform3f);
GLEXT_PROC(PFNGLUNIFORM4FPROC, glUniform4f);
GLEXT_PROC(PFNGLUNIFORM1IPROC, glUniform1i);
GLEXT_PROC(PFNGLUNIFORM2IPROC, glUniform2i);
GLEXT_PROC(PFNGLUNIFORM3IPROC, glUniform3i);
GLEXT_PROC(PFNGLUNIFORM4IPROC, glUniform4i);
GLEXT_PROC(PFNGLUNIFORM1FVPROC, glUniform1fv);
GLEXT_PROC(PFNGLUNIFORM2FVPROC, glUniform2fv);
GLEXT_PROC(PFNGLUNIFORM3FVPROC, glUniform3fv);
GLEXT_PROC(PFNGLUNIFORM4FVPROC, glUniform4fv);
GLEXT_PROC(PFNGLUNIFORM1IVPROC, glUniform1iv);
GLEXT_PROC(PFNGLUNIFORM2IVPROC, glUniform2iv);
GLEXT_PROC(PFNGLUNIFORM3IVPROC, glUniform3iv);
GLEXT_PROC(PFNGLUNIFORM4IVPROC, glUniform4iv);
GLEXT_PROC(PFNGLUNIFORMMATRIX2FVPROC, glUniformMatrix2fv);
GLEXT_PROC(PFNGLUNIFORMMATRIX3FVPROC, glUniformMatrix3fv);
GLEXT_PROC(PFNGLUNIFORMMATRIX4FVPROC, glUniformMatrix4fv);
GLEXT_PROC(PFNGLVALIDATEPROGRAMPROC, glValidateProgram);
GLEXT_PROC(PFNGLVERTEXATTRIB1DPROC, glVertexAttrib1d);
GLEXT_PROC(PFNGLVERTEXATTRIB1DVPROC, glVertexAttrib1dv);
GLEXT_PROC(PFNGLVERTEXATTRIB1FPROC, glVertexAttrib1f);
GLEXT_PROC(PFNGLVERTEXATTRIB1FVPROC, glVertexAttrib1fv);
GLEXT_PROC(PFNGLVERTEXATTRIB1SPROC, glVertexAttrib1s);
GLEXT_PROC(PFNGLVERTEXATTRIB1SVPROC, glVertexAttrib1sv);
GLEXT_PROC(PFNGLVERTEXATTRIB2DPROC, glVertexAttrib2d);
GLEXT_PROC(PFNGLVERTEXATTRIB2DVPROC, glVertexAttrib2dv);
GLEXT_PROC(PFNGLVERTEXATTRIB2FPROC, glVertexAttrib2f);
GLEXT_PROC(PFNGLVERTEXATTRIB2FVPROC, glVertexAttrib2fv);
GLEXT_PROC(PFNGLVERTEXATTRIB2SPROC, glVertexAttrib2s);
GLEXT_PROC(PFNGLVERTEXATTRIB2SVPROC, glVertexAttrib2sv);
GLEXT_PROC(PFNGLVERTEXATTRIB3DPROC, glVertexAttrib3d);
GLEXT_PROC(PFNGLVERTEXATTRIB3DVPROC, glVertexAttrib3dv);
GLEXT_PROC(PFNGLVERTEXATTRIB3FPROC, glVertexAttrib3f);
GLEXT_PROC(PFNGLVERTEXATTRIB3FVPROC, glVertexAttrib3fv);
GLEXT_PROC(PFNGLVERTEXATTRIB3SPROC, glVertexAttrib3s);
GLEXT_PROC(PFNGLVERTEXATTRIB3SVPROC, glVertexAttrib3sv);
GLEXT_PROC(PFNGLVERTEXATTRIB4NBVPROC, glVertexAttrib4Nbv);
GLEXT_PROC(PFNGLVERTEXATTRIB4NIVPROC, glVertexAttrib4Niv);
GLEXT_PROC(PFNGLVERTEXATTRIB4NSVPROC, glVertexAttrib4Nsv);
GLEXT_PROC(PFNGLVERTEXATTRIB4NUBPROC, glVertexAttrib4Nub);
GLEXT_PROC(PFNGLVERTEXATTRIB4NUBVPROC, glVertexAttrib4Nubv);
GLEXT_PROC(PFNGLVERTEXATTRIB4NUIVPROC, glVertexAttrib4Nuiv);
GLEXT_PROC(PFNGLVERTEXATTRIB4NUSVPROC, glVertexAttrib4Nusv);
GLEXT_PROC(PFNGLVERTEXATTRIB4BVPROC, glVertexAttrib4bv);
GLEXT_PROC(PFNGLVERTEXATTRIB4DPROC, glVertexAttrib4d);
GLEXT_PROC(PFNGLVERTEXATTRIB4DVPROC, glVertexAttrib4dv);
GLEXT_PROC(PFNGLVERTEXATTRIB4FPROC, glVertexAttrib4f);
GLEXT_PROC(PFNGLVERTEXATTRIB4FVPROC, glVertexAttrib4fv);
GLEXT_PROC(PFNGLVERTEXATTRIB4IVPROC, glVertexAttrib4iv);
GLEXT_PROC(PFNGLVERTEXATTRIB4SPROC, glVertexAttrib4s);
GLEXT_PROC(PFNGLVERTEXATTRIB4SVPROC, glVertexAttrib4sv);
GLEXT_PROC(PFNGLVERTEXATTRIB4UBVPROC, glVertexAttrib4ubv);
GLEXT_PROC(PFNGLVERTEXATTRIB4UIVPROC, glVertexAttrib4uiv);
GLEXT_PROC(PFNGLVERTEXATTRIB4USVPROC, glVertexAttrib4usv);
GLEXT_PROC(PFNGLVERTEXATTRIBPOINTERPROC, glVertexAttribPointer);

// ---------------------------------------------------------------------------------
// GL_VERSION_2_1
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLUNIFORMMATRIX2X3FVPROC, glUniformMatrix2x3fv);
GLEXT_PROC(PFNGLUNIFORMMATRIX3X2FVPROC, glUniformMatrix3x2fv);
GLEXT_PROC(PFNGLUNIFORMMATRIX2X4FVPROC, glUniformMatrix2x4fv);
GLEXT_PROC(PFNGLUNIFORMMATRIX4X2FVPROC, glUniformMatrix4x2fv);
GLEXT_PROC(PFNGLUNIFORMMATRIX3X4FVPROC, glUniformMatrix3x4fv);
GLEXT_PROC(PFNGLUNIFORMMATRIX4X3FVPROC, glUniformMatrix4x3fv);

// ---------------------------------------------------------------------------------
// GL_VERSION_3_0
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLCOLORMASKIPROC, glColorMaski);
GLEXT_PROC(PFNGLGETBOOLEANI_VPROC, glGetBooleani_v);
GLEXT_PROC(PFNGLGETINTEGERI_VPROC, glGetIntegeri_v);
GLEXT_PROC(PFNGLENABLEIPROC, glEnablei);
GLEXT_PROC(PFNGLDISABLEIPROC, glDisablei);
GLEXT_PROC(PFNGLISENABLEDIPROC, glIsEnabledi);
GLEXT_PROC(PFNGLBEGINTRANSFORMFEEDBACKPROC, glBeginTransformFeedback);
GLEXT_PROC(PFNGLENDTRANSFORMFEEDBACKPROC, glEndTransformFeedback);
GLEXT_PROC(PFNGLBINDBUFFERRANGEPROC, glBindBufferRange);
GLEXT_PROC(PFNGLBINDBUFFERBASEPROC, glBindBufferBase);
GLEXT_PROC(PFNGLTRANSFORMFEEDBACKVARYINGSPROC, glTransformFeedbackVaryings);
GLEXT_PROC(PFNGLGETTRANSFORMFEEDBACKVARYINGPROC, glGetTransformFeedbackVarying);
GLEXT_PROC(PFNGLCLAMPCOLORPROC, glClampColor);
GLEXT_PROC(PFNGLBEGINCONDITIONALRENDERPROC, glBeginConditionalRender);
GLEXT_PROC(PFNGLENDCONDITIONALRENDERPROC, glEndConditionalRender);
GLEXT_PROC(PFNGLVERTEXATTRIBIPOINTERPROC, glVertexAttribIPointer);
GLEXT_PROC(PFNGLGETVERTEXATTRIBIIVPROC, glGetVertexAttribIiv);
GLEXT_PROC(PFNGLGETVERTEXATTRIBIUIVPROC, glGetVertexAttribIuiv);
GLEXT_PROC(PFNGLVERTEXATTRIBI1IPROC, glVertexAttribI1i);
GLEXT_PROC(PFNGLVERTEXATTRIBI2IPROC, glVertexAttribI2i);
GLEXT_PROC(PFNGLVERTEXATTRIBI3IPROC, glVertexAttribI3i);
GLEXT_PROC(PFNGLVERTEXATTRIBI4IPROC, glVertexAttribI4i);
GLEXT_PROC(PFNGLVERTEXATTRIBI1UIPROC, glVertexAttribI1ui);
GLEXT_PROC(PFNGLVERTEXATTRIBI2UIPROC, glVertexAttribI2ui);
GLEXT_PROC(PFNGLVERTEXATTRIBI3UIPROC, glVertexAttribI3ui);
GLEXT_PROC(PFNGLVERTEXATTRIBI4UIPROC, glVertexAttribI4ui);
GLEXT_PROC(PFNGLVERTEXATTRIBI1IVPROC, glVertexAttribI1iv);
GLEXT_PROC(PFNGLVERTEXATTRIBI2IVPROC, glVertexAttribI2iv);
GLEXT_PROC(PFNGLVERTEXATTRIBI3IVPROC, glVertexAttribI3iv);
GLEXT_PROC(PFNGLVERTEXATTRIBI4IVPROC, glVertexAttribI4iv);
GLEXT_PROC(PFNGLVERTEXATTRIBI1UIVPROC, glVertexAttribI1uiv);
GLEXT_PROC(PFNGLVERTEXATTRIBI2UIVPROC, glVertexAttribI2uiv);
GLEXT_PROC(PFNGLVERTEXATTRIBI3UIVPROC, glVertexAttribI3uiv);
GLEXT_PROC(PFNGLVERTEXATTRIBI4UIVPROC, glVertexAttribI4uiv);
GLEXT_PROC(PFNGLVERTEXATTRIBI4BVPROC, glVertexAttribI4bv);
GLEXT_PROC(PFNGLVERTEXATTRIBI4SVPROC, glVertexAttribI4sv);
GLEXT_PROC(PFNGLVERTEXATTRIBI4UBVPROC, glVertexAttribI4ubv);
GLEXT_PROC(PFNGLVERTEXATTRIBI4USVPROC, glVertexAttribI4usv);
GLEXT_PROC(PFNGLGETUNIFORMUIVPROC, glGetUniformuiv);
GLEXT_PROC(PFNGLBINDFRAGDATALOCATIONPROC, glBindFragDataLocation);
GLEXT_PROC(PFNGLGETFRAGDATALOCATIONPROC, glGetFragDataLocation);
GLEXT_PROC(PFNGLUNIFORM1UIPROC, glUniform1ui);
GLEXT_PROC(PFNGLUNIFORM2UIPROC, glUniform2ui);
GLEXT_PROC(PFNGLUNIFORM3UIPROC, glUniform3ui);
GLEXT_PROC(PFNGLUNIFORM4UIPROC, glUniform4ui);
GLEXT_PROC(PFNGLUNIFORM1UIVPROC, glUniform1uiv);
GLEXT_PROC(PFNGLUNIFORM2UIVPROC, glUniform2uiv);
GLEXT_PROC(PFNGLUNIFORM3UIVPROC, glUniform3uiv);
GLEXT_PROC(PFNGLUNIFORM4UIVPROC, glUniform4uiv);
GLEXT_PROC(PFNGLTEXPARAMETERIIVPROC, glTexParameterIiv);
GLEXT_PROC(PFNGLTEXPARAMETERIUIVPROC, glTexParameterIuiv);
GLEXT_PROC(PFNGLGETTEXPARAMETERIIVPROC, glGetTexParameterIiv);
GLEXT_PROC(PFNGLGETTEXPARAMETERIUIVPROC, glGetTexParameterIuiv);
GLEXT_PROC(PFNGLCLEARBUFFERIVPROC, glClearBufferiv);
GLEXT_PROC(PFNGLCLEARBUFFERUIVPROC, glClearBufferuiv);
GLEXT_PROC(PFNGLCLEARBUFFERFVPROC, glClearBufferfv);
GLEXT_PROC(PFNGLCLEARBUFFERFIPROC, glClearBufferfi);
GLEXT_PROC(PFNGLGETSTRINGIPROC, glGetStringi);
GLEXT_PROC(PFNGLISRENDERBUFFERPROC, glIsRenderbuffer);
GLEXT_PROC(PFNGLBINDRENDERBUFFERPROC, glBindRenderbuffer);
GLEXT_PROC(PFNGLDELETERENDERBUFFERSPROC, glDeleteRenderbuffers);
GLEXT_PROC(PFNGLGENRENDERBUFFERSPROC, glGenRenderbuffers);
GLEXT_PROC(PFNGLRENDERBUFFERSTORAGEPROC, glRenderbufferStorage);
GLEXT_PROC(PFNGLGETRENDERBUFFERPARAMETERIVPROC, glGetRenderbufferParameteriv);
GLEXT_PROC(PFNGLISFRAMEBUFFERPROC, glIsFramebuffer);
GLEXT_PROC(PFNGLBINDFRAMEBUFFERPROC, glBindFramebuffer);
GLEXT_PROC(PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers);
GLEXT_PROC(PFNGLGENFRAMEBUFFERSPROC, glGenFramebuffers);
GLEXT_PROC(PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus);
GLEXT_PROC(PFNGLFRAMEBUFFERTEXTURE1DPROC, glFramebufferTexture1D);
GLEXT_PROC(PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D);
GLEXT_PROC(PFNGLFRAMEBUFFERTEXTURE3DPROC, glFramebufferTexture3D);
GLEXT_PROC(PFNGLFRAMEBUFFERRENDERBUFFERPROC, glFramebufferRenderbuffer);
GLEXT_PROC(PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC, glGetFramebufferAttachmentParameteriv);
GLEXT_PROC(PFNGLGENERATEMIPMAPPROC, glGenerateMipmap);
GLEXT_PROC(PFNGLBLITFRAMEBUFFERPROC, glBlitFramebuffer);
GLEXT_PROC(PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC, glRenderbufferStorageMultisample);
GLEXT_PROC(PFNGLFRAMEBUFFERTEXTURELAYERPROC, glFramebufferTextureLayer);
GLEXT_PROC(PFNGLMAPBUFFERRANGEPROC, glMapBufferRange);
GLEXT_PROC(PFNGLFLUSHMAPPEDBUFFERRANGEPROC, glFlushMappedBufferRange);
GLEXT_PROC(PFNGLBINDVERTEXARRAYPROC, glBindVertexArray);
GLEXT_PROC(PFNGLDELETEVERTEXARRAYSPROC, glDeleteVertexArrays);
GLEXT_PROC(PFNGLGENVERTEXARRAYSPROC, glGenVertexArrays);
GLEXT_PROC(PFNGLISVERTEXARRAYPROC, glIsVertexArray);

// ---------------------------------------------------------------------------------
// GL_VERSION_3_1
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLDRAWARRAYSINSTANCEDPROC, glDrawArraysInstanced);
GLEXT_PROC(PFNGLDRAWELEMENTSINSTANCEDPROC, glDrawElementsInstanced);
GLEXT_PROC(PFNGLTEXBUFFERPROC, glTexBuffer);
GLEXT_PROC(PFNGLPRIMITIVERESTARTINDEXPROC, glPrimitiveRestartIndex);
GLEXT_PROC(PFNGLCOPYBUFFERSUBDATAPROC, glCopyBufferSubData);
GLEXT_PROC(PFNGLGETUNIFORMINDICESPROC, glGetUniformIndices);
GLEXT_PROC(PFNGLGETACTIVEUNIFORMSIVPROC, glGetActiveUniformsiv);
GLEXT_PROC(PFNGLGETACTIVEUNIFORMNAMEPROC, glGetActiveUniformName);
GLEXT_PROC(PFNGLGETUNIFORMBLOCKINDEXPROC, glGetUniformBlockIndex);
GLEXT_PROC(PFNGLGETACTIVEUNIFORMBLOCKIVPROC, glGetActiveUniformBlockiv);
GLEXT_PROC(PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC, glGetActiveUniformBlockName);
GLEXT_PROC(PFNGLUNIFORMBLOCKBINDINGPROC, glUniformBlockBinding);

// ---------------------------------------------------------------------------------
// GL_VERSION_3_2
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLDRAWELEMENTSBASEVERTEXPROC, glDrawElementsBaseVertex);
GLEXT_PROC(PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC, glDrawRangeElementsBaseVertex);
GLEXT_PROC(PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC, glDrawElementsInstancedBaseVertex);
GLEXT_PROC(PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC, glMultiDrawElementsBaseVertex);
GLEXT_PROC(PFNGLPROVOKINGVERTEXPROC, glProvokingVertex);
GLEXT_PROC(PFNGLFENCESYNCPROC, glFenceSync);
GLEXT_PROC(PFNGLISSYNCPROC, glIsSync);
GLEXT_PROC(PFNGLDELETESYNCPROC, glDeleteSync);
GLEXT_PROC(PFNGLCLIENTWAITSYNCPROC, glClientWaitSync);
GLEXT_PROC(PFNGLWAITSYNCPROC, glWaitSync);
GLEXT_PROC(PFNGLGETINTEGER64VPROC, glGetInteger64v);
GLEXT_PROC(PFNGLGETSYNCIVPROC, glGetSynciv);
GLEXT_PROC(PFNGLGETINTEGER64I_VPROC, glGetInteger64i_v);
GLEXT_PROC(PFNGLGETBUFFERPARAMETERI64VPROC, glGetBufferParameteri64v);
GLEXT_PROC(PFNGLFRAMEBUFFERTEXTUREPROC, glFramebufferTexture);
GLEXT_PROC(PFNGLTEXIMAGE2DMULTISAMPLEPROC, glTexImage2DMultisample);
GLEXT_PROC(PFNGLTEXIMAGE3DMULTISAMPLEPROC, glTexImage3DMultisample);
GLEXT_PROC(PFNGLGETMULTISAMPLEFVPROC, glGetMultisamplefv);
GLEXT_PROC(PFNGLSAMPLEMASKIPROC, glSampleMaski);

// ---------------------------------------------------------------------------------
// GL_VERSION_3_3
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLBINDFRAGDATALOCATIONINDEXEDPROC, glBindFragDataLocationIndexed);
GLEXT_PROC(PFNGLGETFRAGDATAINDEXPROC, glGetFragDataIndex);
GLEXT_PROC(PFNGLGENSAMPLERSPROC, glGenSamplers);
GLEXT_PROC(PFNGLDELETESAMPLERSPROC, glDeleteSamplers);
GLEXT_PROC(PFNGLISSAMPLERPROC, glIsSampler);
GLEXT_PROC(PFNGLBINDSAMPLERPROC, glBindSampler);
GLEXT_PROC(PFNGLSAMPLERPARAMETERIPROC, glSamplerParameteri);
GLEXT_PROC(PFNGLSAMPLERPARAMETERIVPROC, glSamplerParameteriv);
GLEXT_PROC(PFNGLSAMPLERPARAMETERFPROC, glSamplerParameterf);
GLEXT_PROC(PFNGLSAMPLERPARAMETERFVPROC, glSamplerParameterfv);
GLEXT_PROC(PFNGLSAMPLERPARAMETERIIVPROC, glSamplerParameterIiv);
GLEXT_PROC(PFNGLSAMPLERPARAMETERIUIVPROC, glSamplerParameterIuiv);
GLEXT_PROC(PFNGLGETSAMPLERPARAMETERIVPROC, glGetSamplerParameteriv);
GLEXT_PROC(PFNGLGETSAMPLERPARAMETERIIVPROC, glGetSamplerParameterIiv);
GLEXT_PROC(PFNGLGETSAMPLERPARAMETERFVPROC, glGetSamplerParameterfv);
GLEXT_PROC(PFNGLGETSAMPLERPARAMETERIUIVPROC, glGetSamplerParameterIuiv);
GLEXT_PROC(PFNGLQUERYCOUNTERPROC, glQueryCounter);
GLEXT_PROC(PFNGLGETQUERYOBJECTI64VPROC, glGetQueryObjecti64v);
GLEXT_PROC(PFNGLGETQUERYOBJECTUI64VPROC, glGetQueryObjectui64v);
GLEXT_PROC(PFNGLVERTEXATTRIBDIVISORPROC, glVertexAttribDivisor);
GLEXT_PROC(PFNGLVERTEXATTRIBP1UIPROC, glVertexAttribP1ui);
GLEXT_PROC(PFNGLVERTEXATTRIBP1UIVPROC, glVertexAttribP1uiv);
GLEXT_PROC(PFNGLVERTEXATTRIBP2UIPROC, glVertexAttribP2ui);
GLEXT_PROC(PFNGLVERTEXATTRIBP2UIVPROC, glVertexAttribP2uiv);
GLEXT_PROC(PFNGLVERTEXATTRIBP3UIPROC, glVertexAttribP3ui);
GLEXT_PROC(PFNGLVERTEXATTRIBP3UIVPROC, glVertexAttribP3uiv);
GLEXT_PROC(PFNGLVERTEXATTRIBP4UIPROC, glVertexAttribP4ui);
GLEXT_PROC(PFNGLVERTEXATTRIBP4UIVPROC, glVertexAttribP4uiv);

// ---------------------------------------------------------------------------------
// GL_VERSION_4_0
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLMINSAMPLESHADINGPROC, glMinSampleShading);
GLEXT_PROC(PFNGLBLENDEQUATIONIPROC, glBlendEquationi);
GLEXT_PROC(PFNGLBLENDEQUATIONSEPARATEIPROC, glBlendEquationSeparatei);
GLEXT_PROC(PFNGLBLENDFUNCIPROC, glBlendFunci);
GLEXT_PROC(PFNGLBLENDFUNCSEPARATEIPROC, glBlendFuncSeparatei);
GLEXT_PROC(PFNGLDRAWARRAYSINDIRECTPROC, glDrawArraysIndirect);
GLEXT_PROC(PFNGLDRAWELEMENTSINDIRECTPROC, glDrawElementsIndirect);
GLEXT_PROC(PFNGLUNIFORM1DPROC, glUniform1d);
GLEXT_PROC(PFNGLUNIFORM2DPROC, glUniform2d);
GLEXT_PROC(PFNGLUNIFORM3DPROC, glUniform3d);
GLEXT_PROC(PFNGLUNIFORM4DPROC, glUniform4d);
GLEXT_PROC(PFNGLUNIFORM1DVPROC, glUniform1dv);
GLEXT_PROC(PFNGLUNIFORM2DVPROC, glUniform2dv);
GLEXT_PROC(PFNGLUNIFORM3DVPROC, glUniform3dv);
GLEXT_PROC(PFNGLUNIFORM4DVPROC, glUniform4dv);
GLEXT_PROC(PFNGLUNIFORMMATRIX2DVPROC, glUniformMatrix2dv);
GLEXT_PROC(PFNGLUNIFORMMATRIX3DVPROC, glUniformMatrix3dv);
GLEXT_PROC(PFNGLUNIFORMMATRIX4DVPROC, glUniformMatrix4dv);
GLEXT_PROC(PFNGLUNIFORMMATRIX2X3DVPROC, glUniformMatrix2x3dv);
GLEXT_PROC(PFNGLUNIFORMMATRIX2X4DVPROC, glUniformMatrix2x4dv);
GLEXT_PROC(PFNGLUNIFORMMATRIX3X2DVPROC, glUniformMatrix3x2dv);
GLEXT_PROC(PFNGLUNIFORMMATRIX3X4DVPROC, glUniformMatrix3x4dv);
GLEXT_PROC(PFNGLUNIFORMMATRIX4X2DVPROC, glUniformMatrix4x2dv);
GLEXT_PROC(PFNGLUNIFORMMATRIX4X3DVPROC, glUniformMatrix4x3dv);
GLEXT_PROC(PFNGLGETUNIFORMDVPROC, glGetUniformdv);
GLEXT_PROC(PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC, glGetSubroutineUniformLocation);
GLEXT_PROC(PFNGLGETSUBROUTINEINDEXPROC, glGetSubroutineIndex);
GLEXT_PROC(PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC, glGetActiveSubroutineUniformiv);
GLEXT_PROC(PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC, glGetActiveSubroutineUniformName);
GLEXT_PROC(PFNGLGETACTIVESUBROUTINENAMEPROC, glGetActiveSubroutineName);
GLEXT_PROC(PFNGLUNIFORMSUBROUTINESUIVPROC, glUniformSubroutinesuiv);
GLEXT_PROC(PFNGLGETUNIFORMSUBROUTINEUIVPROC, glGetUniformSubroutineuiv);
GLEXT_PROC(PFNGLGETPROGRAMSTAGEIVPROC, glGetProgramStageiv);
GLEXT_PROC(PFNGLPATCHPARAMETERIPROC, glPatchParameteri);
GLEXT_PROC(PFNGLPATCHPARAMETERFVPROC, glPatchParameterfv);
GLEXT_PROC(PFNGLBINDTRANSFORMFEEDBACKPROC, glBindTransformFeedback);
GLEXT_PROC(PFNGLDELETETRANSFORMFEEDBACKSPROC, glDeleteTransformFeedbacks);
GLEXT_PROC(PFNGLGENTRANSFORMFEEDBACKSPROC, glGenTransformFeedbacks);
GLEXT_PROC(PFNGLISTRANSFORMFEEDBACKPROC, glIsTransformFeedback);
GLEXT_PROC(PFNGLPAUSETRANSFORMFEEDBACKPROC, glPauseTransformFeedback);
GLEXT_PROC(PFNGLRESUMETRANSFORMFEEDBACKPROC, glResumeTransformFeedback);
GLEXT_PROC(PFNGLDRAWTRANSFORMFEEDBACKPROC, glDrawTransformFeedback);
GLEXT_PROC(PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC, glDrawTransformFeedbackStream);
GLEXT_PROC(PFNGLBEGINQUERYINDEXEDPROC, glBeginQueryIndexed);
GLEXT_PROC(PFNGLENDQUERYINDEXEDPROC, glEndQueryIndexed);
GLEXT_PROC(PFNGLGETQUERYINDEXEDIVPROC, glGetQueryIndexediv);

// ---------------------------------------------------------------------------------
// GL_VERSION_4_1
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLRELEASESHADERCOMPILERPROC, glReleaseShaderCompiler);
GLEXT_PROC(PFNGLSHADERBINARYPROC, glShaderBinary);
GLEXT_PROC(PFNGLGETSHADERPRECISIONFORMATPROC, glGetShaderPrecisionFormat);
GLEXT_PROC(PFNGLDEPTHRANGEFPROC, glDepthRangef);
GLEXT_PROC(PFNGLCLEARDEPTHFPROC, glClearDepthf);
GLEXT_PROC(PFNGLGETPROGRAMBINARYPROC, glGetProgramBinary);
GLEXT_PROC(PFNGLPROGRAMBINARYPROC, glProgramBinary);
GLEXT_PROC(PFNGLPROGRAMPARAMETERIPROC, glProgramParameteri);
GLEXT_PROC(PFNGLUSEPROGRAMSTAGESPROC, glUseProgramStages);
GLEXT_PROC(PFNGLACTIVESHADERPROGRAMPROC, glActiveShaderProgram);
GLEXT_PROC(PFNGLCREATESHADERPROGRAMVPROC, glCreateShaderProgramv);
GLEXT_PROC(PFNGLBINDPROGRAMPIPELINEPROC, glBindProgramPipeline);
GLEXT_PROC(PFNGLDELETEPROGRAMPIPELINESPROC, glDeleteProgramPipelines);
GLEXT_PROC(PFNGLGENPROGRAMPIPELINESPROC, glGenProgramPipelines);
GLEXT_PROC(PFNGLISPROGRAMPIPELINEPROC, glIsProgramPipeline);
GLEXT_PROC(PFNGLGETPROGRAMPIPELINEIVPROC, glGetProgramPipelineiv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1IPROC, glProgramUniform1i);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1IVPROC, glProgramUniform1iv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1FPROC, glProgramUniform1f);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1FVPROC, glProgramUniform1fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1DPROC, glProgramUniform1d);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1DVPROC, glProgramUniform1dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1UIPROC, glProgramUniform1ui);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1UIVPROC, glProgramUniform1uiv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2IPROC, glProgramUniform2i);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2IVPROC, glProgramUniform2iv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2FPROC, glProgramUniform2f);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2FVPROC, glProgramUniform2fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2DPROC, glProgramUniform2d);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2DVPROC, glProgramUniform2dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2UIPROC, glProgramUniform2ui);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2UIVPROC, glProgramUniform2uiv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3IPROC, glProgramUniform3i);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3IVPROC, glProgramUniform3iv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3FPROC, glProgramUniform3f);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3FVPROC, glProgramUniform3fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3DPROC, glProgramUniform3d);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3DVPROC, glProgramUniform3dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3UIPROC, glProgramUniform3ui);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3UIVPROC, glProgramUniform3uiv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4IPROC, glProgramUniform4i);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4IVPROC, glProgramUniform4iv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4FPROC, glProgramUniform4f);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4FVPROC, glProgramUniform4fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4DPROC, glProgramUniform4d);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4DVPROC, glProgramUniform4dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4UIPROC, glProgramUniform4ui);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4UIVPROC, glProgramUniform4uiv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2FVPROC, glProgramUniformMatrix2fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3FVPROC, glProgramUniformMatrix3fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4FVPROC, glProgramUniformMatrix4fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2DVPROC, glProgramUniformMatrix2dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3DVPROC, glProgramUniformMatrix3dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4DVPROC, glProgramUniformMatrix4dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC, glProgramUniformMatrix2x3fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC, glProgramUniformMatrix3x2fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC, glProgramUniformMatrix2x4fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC, glProgramUniformMatrix4x2fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC, glProgramUniformMatrix3x4fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC, glProgramUniformMatrix4x3fv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC, glProgramUniformMatrix2x3dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC, glProgramUniformMatrix3x2dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC, glProgramUniformMatrix2x4dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC, glProgramUniformMatrix4x2dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC, glProgramUniformMatrix3x4dv);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC, glProgramUniformMatrix4x3dv);
GLEXT_PROC(PFNGLVALIDATEPROGRAMPIPELINEPROC, glValidateProgramPipeline);
GLEXT_PROC(PFNGLGETPROGRAMPIPELINEINFOLOGPROC, glGetProgramPipelineInfoLog);
GLEXT_PROC(PFNGLVERTEXATTRIBL1DPROC, glVertexAttribL1d);
GLEXT_PROC(PFNGLVERTEXATTRIBL2DPROC, glVertexAttribL2d);
GLEXT_PROC(PFNGLVERTEXATTRIBL3DPROC, glVertexAttribL3d);
GLEXT_PROC(PFNGLVERTEXATTRIBL4DPROC, glVertexAttribL4d);
GLEXT_PROC(PFNGLVERTEXATTRIBL1DVPROC, glVertexAttribL1dv);
GLEXT_PROC(PFNGLVERTEXATTRIBL2DVPROC, glVertexAttribL2dv);
GLEXT_PROC(PFNGLVERTEXATTRIBL3DVPROC, glVertexAttribL3dv);
GLEXT_PROC(PFNGLVERTEXATTRIBL4DVPROC, glVertexAttribL4dv);
GLEXT_PROC(PFNGLVERTEXATTRIBLPOINTERPROC, glVertexAttribLPointer);
GLEXT_PROC(PFNGLGETVERTEXATTRIBLDVPROC, glGetVertexAttribLdv);
GLEXT_PROC(PFNGLVIEWPORTARRAYVPROC, glViewportArrayv);
GLEXT_PROC(PFNGLVIEWPORTINDEXEDFPROC, glViewportIndexedf);
GLEXT_PROC(PFNGLVIEWPORTINDEXEDFVPROC, glViewportIndexedfv);
GLEXT_PROC(PFNGLSCISSORARRAYVPROC, glScissorArrayv);
GLEXT_PROC(PFNGLSCISSORINDEXEDPROC, glScissorIndexed);
GLEXT_PROC(PFNGLSCISSORINDEXEDVPROC, glScissorIndexedv);
GLEXT_PROC(PFNGLDEPTHRANGEARRAYVPROC, glDepthRangeArrayv);
GLEXT_PROC(PFNGLDEPTHRANGEINDEXEDPROC, glDepthRangeIndexed);
GLEXT_PROC(PFNGLGETFLOATI_VPROC, glGetFloati_v);
GLEXT_PROC(PFNGLGETDOUBLEI_VPROC, glGetDoublei_v);

// ---------------------------------------------------------------------------------
// GL_VERSION_4_2
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC, glDrawArraysInstancedBaseInstance);
GLEXT_PROC(PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC, glDrawElementsInstancedBaseInstance);
GLEXT_PROC(PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC, glDrawElementsInstancedBaseVertexBaseInstance);
GLEXT_PROC(PFNGLGETINTERNALFORMATIVPROC, glGetInternalformativ);
GLEXT_PROC(PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC, glGetActiveAtomicCounterBufferiv);
GLEXT_PROC(PFNGLBINDIMAGETEXTUREPROC, glBindImageTexture);
GLEXT_PROC(PFNGLMEMORYBARRIERPROC, glMemoryBarrier);
GLEXT_PROC(PFNGLTEXSTORAGE1DPROC, glTexStorage1D);
GLEXT_PROC(PFNGLTEXSTORAGE2DPROC, glTexStorage2D);
GLEXT_PROC(PFNGLTEXSTORAGE3DPROC, glTexStorage3D);
GLEXT_PROC(PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC, glDrawTransformFeedbackInstanced);
GLEXT_PROC(PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC, glDrawTransformFeedbackStreamInstanced);

// ---------------------------------------------------------------------------------
// GL_VERSION_4_3
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLCLEARBUFFERDATAPROC, glClearBufferData);
GLEXT_PROC(PFNGLCLEARBUFFERSUBDATAPROC, glClearBufferSubData);
GLEXT_PROC(PFNGLDISPATCHCOMPUTEPROC, glDispatchCompute);
GLEXT_PROC(PFNGLDISPATCHCOMPUTEINDIRECTPROC, glDispatchComputeIndirect);
GLEXT_PROC(PFNGLCOPYIMAGESUBDATAPROC, glCopyImageSubData);
GLEXT_PROC(PFNGLFRAMEBUFFERPARAMETERIPROC, glFramebufferParameteri);
GLEXT_PROC(PFNGLGETFRAMEBUFFERPARAMETERIVPROC, glGetFramebufferParameteriv);
GLEXT_PROC(PFNGLGETINTERNALFORMATI64VPROC, glGetInternalformati64v);
GLEXT_PROC(PFNGLINVALIDATETEXSUBIMAGEPROC, glInvalidateTexSubImage);
GLEXT_PROC(PFNGLINVALIDATETEXIMAGEPROC, glInvalidateTexImage);
GLEXT_PROC(PFNGLINVALIDATEBUFFERSUBDATAPROC, glInvalidateBufferSubData);
GLEXT_PROC(PFNGLINVALIDATEBUFFERDATAPROC, glInvalidateBufferData);
GLEXT_PROC(PFNGLINVALIDATEFRAMEBUFFERPROC, glInvalidateFramebuffer);
GLEXT_PROC(PFNGLINVALIDATESUBFRAMEBUFFERPROC, glInvalidateSubFramebuffer);
GLEXT_PROC(PFNGLMULTIDRAWARRAYSINDIRECTPROC, glMultiDrawArraysIndirect);
GLEXT_PROC(PFNGLMULTIDRAWELEMENTSINDIRECTPROC, glMultiDrawElementsIndirect);
GLEXT_PROC(PFNGLGETPROGRAMINTERFACEIVPROC, glGetProgramInterfaceiv);
GLEXT_PROC(PFNGLGETPROGRAMRESOURCEINDEXPROC, glGetProgramResourceIndex);
GLEXT_PROC(PFNGLGETPROGRAMRESOURCENAMEPROC, glGetProgramResourceName);
GLEXT_PROC(PFNGLGETPROGRAMRESOURCEIVPROC, glGetProgramResourceiv);
GLEXT_PROC(PFNGLGETPROGRAMRESOURCELOCATIONPROC, glGetProgramResourceLocation);
GLEXT_PROC(PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC, glGetProgramResourceLocationIndex);
GLEXT_PROC(PFNGLSHADERSTORAGEBLOCKBINDINGPROC, glShaderStorageBlockBinding);
GLEXT_PROC(PFNGLTEXBUFFERRANGEPROC, glTexBufferRange);
GLEXT_PROC(PFNGLTEXSTORAGE2DMULTISAMPLEPROC, glTexStorage2DMultisample);
GLEXT_PROC(PFNGLTEXSTORAGE3DMULTISAMPLEPROC, glTexStorage3DMultisample);
GLEXT_PROC(PFNGLTEXTUREVIEWPROC, glTextureView);
GLEXT_PROC(PFNGLBINDVERTEXBUFFERPROC, glBindVertexBuffer);
GLEXT_PROC(PFNGLVERTEXATTRIBFORMATPROC, glVertexAttribFormat);
GLEXT_PROC(PFNGLVERTEXATTRIBIFORMATPROC, glVertexAttribIFormat);
GLEXT_PROC(PFNGLVERTEXATTRIBLFORMATPROC, glVertexAttribLFormat);
GLEXT_PROC(PFNGLVERTEXATTRIBBINDINGPROC, glVertexAttribBinding);
GLEXT_PROC(PFNGLVERTEXBINDINGDIVISORPROC, glVertexBindingDivisor);
GLEXT_PROC(PFNGLDEBUGMESSAGECONTROLPROC, glDebugMessageControl);
GLEXT_PROC(PFNGLDEBUGMESSAGEINSERTPROC, glDebugMessageInsert);
GLEXT_PROC(PFNGLDEBUGMESSAGECALLBACKPROC, glDebugMessageCallback);
GLEXT_PROC(PFNGLGETDEBUGMESSAGELOGPROC, glGetDebugMessageLog);
GLEXT_PROC(PFNGLPUSHDEBUGGROUPPROC, glPushDebugGroup);
GLEXT_PROC(PFNGLPOPDEBUGGROUPPROC, glPopDebugGroup);
GLEXT_PROC(PFNGLOBJECTLABELPROC, glObjectLabel);
GLEXT_PROC(PFNGLGETOBJECTLABELPROC, glGetObjectLabel);
GLEXT_PROC(PFNGLOBJECTPTRLABELPROC, glObjectPtrLabel);
GLEXT_PROC(PFNGLGETOBJECTPTRLABELPROC, glGetObjectPtrLabel);

// ---------------------------------------------------------------------------------
// GL_VERSION_4_4
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLBUFFERSTORAGEPROC, glBufferStorage);
GLEXT_PROC(PFNGLCLEARTEXIMAGEPROC, glClearTexImage);
GLEXT_PROC(PFNGLCLEARTEXSUBIMAGEPROC, glClearTexSubImage);
GLEXT_PROC(PFNGLBINDBUFFERSBASEPROC, glBindBuffersBase);
GLEXT_PROC(PFNGLBINDBUFFERSRANGEPROC, glBindBuffersRange);
GLEXT_PROC(PFNGLBINDTEXTURESPROC, glBindTextures);
GLEXT_PROC(PFNGLBINDSAMPLERSPROC, glBindSamplers);
GLEXT_PROC(PFNGLBINDIMAGETEXTURESPROC, glBindImageTextures);
GLEXT_PROC(PFNGLBINDVERTEXBUFFERSPROC, glBindVertexBuffers);

// ---------------------------------------------------------------------------------
// GL_VERSION_4_5
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLCLIPCONTROLPROC, glClipControl);
GLEXT_PROC(PFNGLCREATETRANSFORMFEEDBACKSPROC, glCreateTransformFeedbacks);
GLEXT_PROC(PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC, glTransformFeedbackBufferBase);
GLEXT_PROC(PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC, glTransformFeedbackBufferRange);
GLEXT_PROC(PFNGLGETTRANSFORMFEEDBACKIVPROC, glGetTransformFeedbackiv);
GLEXT_PROC(PFNGLGETTRANSFORMFEEDBACKI_VPROC, glGetTransformFeedbacki_v);
GLEXT_PROC(PFNGLGETTRANSFORMFEEDBACKI64_VPROC, glGetTransformFeedbacki64_v);
GLEXT_PROC(PFNGLCREATEBUFFERSPROC, glCreateBuffers);
GLEXT_PROC(PFNGLNAMEDBUFFERSTORAGEPROC, glNamedBufferStorage);
GLEXT_PROC(PFNGLNAMEDBUFFERDATAPROC, glNamedBufferData);
GLEXT_PROC(PFNGLNAMEDBUFFERSUBDATAPROC, glNamedBufferSubData);
GLEXT_PROC(PFNGLCOPYNAMEDBUFFERSUBDATAPROC, glCopyNamedBufferSubData);
GLEXT_PROC(PFNGLCLEARNAMEDBUFFERDATAPROC, glClearNamedBufferData);
GLEXT_PROC(PFNGLCLEARNAMEDBUFFERSUBDATAPROC, glClearNamedBufferSubData);
GLEXT_PROC(PFNGLMAPNAMEDBUFFERPROC, glMapNamedBuffer);
GLEXT_PROC(PFNGLMAPNAMEDBUFFERRANGEPROC, glMapNamedBufferRange);
GLEXT_PROC(PFNGLUNMAPNAMEDBUFFERPROC, glUnmapNamedBuffer);
GLEXT_PROC(PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC, glFlushMappedNamedBufferRange);
GLEXT_PROC(PFNGLGETNAMEDBUFFERPARAMETERIVPROC, glGetNamedBufferParameteriv);
GLEXT_PROC(PFNGLGETNAMEDBUFFERPARAMETERI64VPROC, glGetNamedBufferParameteri64v);
GLEXT_PROC(PFNGLGETNAMEDBUFFERPOINTERVPROC, glGetNamedBufferPointerv);
GLEXT_PROC(PFNGLGETNAMEDBUFFERSUBDATAPROC, glGetNamedBufferSubData);
GLEXT_PROC(PFNGLCREATEFRAMEBUFFERSPROC, glCreateFramebuffers);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC, glNamedFramebufferRenderbuffer);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC, glNamedFramebufferParameteri);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERTEXTUREPROC, glNamedFramebufferTexture);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC, glNamedFramebufferTextureLayer);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC, glNamedFramebufferDrawBuffer);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC, glNamedFramebufferDrawBuffers);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC, glNamedFramebufferReadBuffer);
GLEXT_PROC(PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC, glInvalidateNamedFramebufferData);
GLEXT_PROC(PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC, glInvalidateNamedFramebufferSubData);
GLEXT_PROC(PFNGLCLEARNAMEDFRAMEBUFFERIVPROC, glClearNamedFramebufferiv);
GLEXT_PROC(PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC, glClearNamedFramebufferuiv);
GLEXT_PROC(PFNGLCLEARNAMEDFRAMEBUFFERFVPROC, glClearNamedFramebufferfv);
GLEXT_PROC(PFNGLCLEARNAMEDFRAMEBUFFERFIPROC, glClearNamedFramebufferfi);
GLEXT_PROC(PFNGLBLITNAMEDFRAMEBUFFERPROC, glBlitNamedFramebuffer);
GLEXT_PROC(PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC, glCheckNamedFramebufferStatus);
GLEXT_PROC(PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC, glGetNamedFramebufferParameteriv);
GLEXT_PROC(PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC, glGetNamedFramebufferAttachmentParameteriv);
GLEXT_PROC(PFNGLCREATERENDERBUFFERSPROC, glCreateRenderbuffers);
GLEXT_PROC(PFNGLNAMEDRENDERBUFFERSTORAGEPROC, glNamedRenderbufferStorage);
GLEXT_PROC(PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC, glNamedRenderbufferStorageMultisample);
GLEXT_PROC(PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC, glGetNamedRenderbufferParameteriv);
GLEXT_PROC(PFNGLCREATETEXTURESPROC, glCreateTextures);
GLEXT_PROC(PFNGLTEXTUREBUFFERPROC, glTextureBuffer);
GLEXT_PROC(PFNGLTEXTUREBUFFERRANGEPROC, glTextureBufferRange);
GLEXT_PROC(PFNGLTEXTURESTORAGE1DPROC, glTextureStorage1D);
GLEXT_PROC(PFNGLTEXTURESTORAGE2DPROC, glTextureStorage2D);
GLEXT_PROC(PFNGLTEXTURESTORAGE3DPROC, glTextureStorage3D);
GLEXT_PROC(PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC, glTextureStorage2DMultisample);
GLEXT_PROC(PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC, glTextureStorage3DMultisample);
GLEXT_PROC(PFNGLTEXTURESUBIMAGE1DPROC, glTextureSubImage1D);
GLEXT_PROC(PFNGLTEXTURESUBIMAGE2DPROC, glTextureSubImage2D);
GLEXT_PROC(PFNGLTEXTURESUBIMAGE3DPROC, glTextureSubImage3D);
GLEXT_PROC(PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC, glCompressedTextureSubImage1D);
GLEXT_PROC(PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC, glCompressedTextureSubImage2D);
GLEXT_PROC(PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC, glCompressedTextureSubImage3D);
GLEXT_PROC(PFNGLCOPYTEXTURESUBIMAGE1DPROC, glCopyTextureSubImage1D);
GLEXT_PROC(PFNGLCOPYTEXTURESUBIMAGE2DPROC, glCopyTextureSubImage2D);
GLEXT_PROC(PFNGLCOPYTEXTURESUBIMAGE3DPROC, glCopyTextureSubImage3D);
GLEXT_PROC(PFNGLTEXTUREPARAMETERFPROC, glTextureParameterf);
GLEXT_PROC(PFNGLTEXTUREPARAMETERFVPROC, glTextureParameterfv);
GLEXT_PROC(PFNGLTEXTUREPARAMETERIPROC, glTextureParameteri);
GLEXT_PROC(PFNGLTEXTUREPARAMETERIIVPROC, glTextureParameterIiv);
GLEXT_PROC(PFNGLTEXTUREPARAMETERIUIVPROC, glTextureParameterIuiv);
GLEXT_PROC(PFNGLTEXTUREPARAMETERIVPROC, glTextureParameteriv);
GLEXT_PROC(PFNGLGENERATETEXTUREMIPMAPPROC, glGenerateTextureMipmap);
GLEXT_PROC(PFNGLBINDTEXTUREUNITPROC, glBindTextureUnit);
GLEXT_PROC(PFNGLGETTEXTUREIMAGEPROC, glGetTextureImage);
GLEXT_PROC(PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC, glGetCompressedTextureImage);
GLEXT_PROC(PFNGLGETTEXTURELEVELPARAMETERFVPROC, glGetTextureLevelParameterfv);
GLEXT_PROC(PFNGLGETTEXTURELEVELPARAMETERIVPROC, glGetTextureLevelParameteriv);
GLEXT_PROC(PFNGLGETTEXTUREPARAMETERFVPROC, glGetTextureParameterfv);
GLEXT_PROC(PFNGLGETTEXTUREPARAMETERIIVPROC, glGetTextureParameterIiv);
GLEXT_PROC(PFNGLGETTEXTUREPARAMETERIUIVPROC, glGetTextureParameterIuiv);
GLEXT_PROC(PFNGLGETTEXTUREPARAMETERIVPROC, glGetTextureParameteriv);
GLEXT_PROC(PFNGLCREATEVERTEXARRAYSPROC, glCreateVertexArrays);
GLEXT_PROC(PFNGLDISABLEVERTEXARRAYATTRIBPROC, glDisableVertexArrayAttrib);
GLEXT_PROC(PFNGLENABLEVERTEXARRAYATTRIBPROC, glEnableVertexArrayAttrib);
GLEXT_PROC(PFNGLVERTEXARRAYELEMENTBUFFERPROC, glVertexArrayElementBuffer);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXBUFFERPROC, glVertexArrayVertexBuffer);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXBUFFERSPROC, glVertexArrayVertexBuffers);
GLEXT_PROC(PFNGLVERTEXARRAYATTRIBBINDINGPROC, glVertexArrayAttribBinding);
GLEXT_PROC(PFNGLVERTEXARRAYATTRIBFORMATPROC, glVertexArrayAttribFormat);
GLEXT_PROC(PFNGLVERTEXARRAYATTRIBIFORMATPROC, glVertexArrayAttribIFormat);
GLEXT_PROC(PFNGLVERTEXARRAYATTRIBLFORMATPROC, glVertexArrayAttribLFormat);
GLEXT_PROC(PFNGLVERTEXARRAYBINDINGDIVISORPROC, glVertexArrayBindingDivisor);
GLEXT_PROC(PFNGLGETVERTEXARRAYIVPROC, glGetVertexArrayiv);
GLEXT_PROC(PFNGLGETVERTEXARRAYINDEXEDIVPROC, glGetVertexArrayIndexediv);
GLEXT_PROC(PFNGLGETVERTEXARRAYINDEXED64IVPROC, glGetVertexArrayIndexed64iv);
GLEXT_PROC(PFNGLCREATESAMPLERSPROC, glCreateSamplers);
GLEXT_PROC(PFNGLCREATEPROGRAMPIPELINESPROC, glCreateProgramPipelines);
GLEXT_PROC(PFNGLCREATEQUERIESPROC, glCreateQueries);
GLEXT_PROC(PFNGLGETQUERYBUFFEROBJECTI64VPROC, glGetQueryBufferObjecti64v);
GLEXT_PROC(PFNGLGETQUERYBUFFEROBJECTIVPROC, glGetQueryBufferObjectiv);
GLEXT_PROC(PFNGLGETQUERYBUFFEROBJECTUI64VPROC, glGetQueryBufferObjectui64v);
GLEXT_PROC(PFNGLGETQUERYBUFFEROBJECTUIVPROC, glGetQueryBufferObjectuiv);
GLEXT_PROC(PFNGLMEMORYBARRIERBYREGIONPROC, glMemoryBarrierByRegion);
GLEXT_PROC(PFNGLGETTEXTURESUBIMAGEPROC, glGetTextureSubImage);
GLEXT_PROC(PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC, glGetCompressedTextureSubImage);
GLEXT_PROC(PFNGLGETGRAPHICSRESETSTATUSPROC, glGetGraphicsResetStatus);
GLEXT_PROC(PFNGLGETNCOMPRESSEDTEXIMAGEPROC, glGetnCompressedTexImage);
GLEXT_PROC(PFNGLGETNTEXIMAGEPROC, glGetnTexImage);
GLEXT_PROC(PFNGLGETNUNIFORMDVPROC, glGetnUniformdv);
GLEXT_PROC(PFNGLGETNUNIFORMFVPROC, glGetnUniformfv);
GLEXT_PROC(PFNGLGETNUNIFORMIVPROC, glGetnUniformiv);
GLEXT_PROC(PFNGLGETNUNIFORMUIVPROC, glGetnUniformuiv);
GLEXT_PROC(PFNGLREADNPIXELSPROC, glReadnPixels);
GLEXT_PROC(PFNGLTEXTUREBARRIERPROC, glTextureBarrier);

// ---------------------------------------------------------------------------------
// GL_VERSION_4_6
// ---------------------------------------------------------------------------------

GLEXT_PROC(PFNGLSPECIALIZESHADERPROC, glSpecializeShader);
GLEXT_PROC(PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC, glMultiDrawArraysIndirectCount);
GLEXT_PROC(PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC, glMultiDrawElementsIndirectCount);
GLEXT_PROC(PFNGLPOLYGONOFFSETCLAMPPROC, glPolygonOffsetClamp);

// ---------------------------------------------------------------------------------
// ARB
// ---------------------------------------------------------------------------------

// GL_ARB_ES3_2_compatibility
GLEXT_PROC(PFNGLPRIMITIVEBOUNDINGBOXARBPROC, glPrimitiveBoundingBoxARB);

// GL_ARB_bindless_texture
GLEXT_PROC(PFNGLGETTEXTUREHANDLEARBPROC, glGetTextureHandleARB);
GLEXT_PROC(PFNGLGETTEXTURESAMPLERHANDLEARBPROC, glGetTextureSamplerHandleARB);
GLEXT_PROC(PFNGLMAKETEXTUREHANDLERESIDENTARBPROC, glMakeTextureHandleResidentARB);
GLEXT_PROC(PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC, glMakeTextureHandleNonResidentARB);
GLEXT_PROC(PFNGLGETIMAGEHANDLEARBPROC, glGetImageHandleARB);
GLEXT_PROC(PFNGLMAKEIMAGEHANDLERESIDENTARBPROC, glMakeImageHandleResidentARB);
GLEXT_PROC(PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC, glMakeImageHandleNonResidentARB);
GLEXT_PROC(PFNGLUNIFORMHANDLEUI64ARBPROC, glUniformHandleui64ARB);
GLEXT_PROC(PFNGLUNIFORMHANDLEUI64VARBPROC, glUniformHandleui64vARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC, glProgramUniformHandleui64ARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC, glProgramUniformHandleui64vARB);
GLEXT_PROC(PFNGLISTEXTUREHANDLERESIDENTARBPROC, glIsTextureHandleResidentARB);
GLEXT_PROC(PFNGLISIMAGEHANDLERESIDENTARBPROC, glIsImageHandleResidentARB);
GLEXT_PROC(PFNGLVERTEXATTRIBL1UI64ARBPROC, glVertexAttribL1ui64ARB);
GLEXT_PROC(PFNGLVERTEXATTRIBL1UI64VARBPROC, glVertexAttribL1ui64vARB);
GLEXT_PROC(PFNGLGETVERTEXATTRIBLUI64VARBPROC, glGetVertexAttribLui64vARB);

// GL_ARB_cl_event
GLEXT_PROC(PFNGLCREATESYNCFROMCLEVENTARBPROC, glCreateSyncFromCLeventARB);

// GL_ARB_compute_variable_group_size
GLEXT_PROC(PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC, glDispatchComputeGroupSizeARB);

// GL_ARB_debug_output
GLEXT_PROC(GLDEBUGPROCARB, glDebugARB);
GLEXT_PROC(PFNGLDEBUGMESSAGECONTROLARBPROC, glDebugMessageControlARB);
GLEXT_PROC(PFNGLDEBUGMESSAGEINSERTARBPROC, glDebugMessageInsertARB);
GLEXT_PROC(PFNGLDEBUGMESSAGECALLBACKARBPROC, glDebugMessageCallbackARB);
GLEXT_PROC(PFNGLGETDEBUGMESSAGELOGARBPROC, glGetDebugMessageLogARB);

// GL_ARB_draw_buffers_blend
GLEXT_PROC(PFNGLBLENDEQUATIONIARBPROC, glBlendEquationiARB);
GLEXT_PROC(PFNGLBLENDEQUATIONSEPARATEIARBPROC, glBlendEquationSeparateiARB);
GLEXT_PROC(PFNGLBLENDFUNCIARBPROC, glBlendFunciARB);
GLEXT_PROC(PFNGLBLENDFUNCSEPARATEIARBPROC, glBlendFuncSeparateiARB);

// GL_ARB_indirect_parameters
GLEXT_PROC(PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC, glMultiDrawArraysIndirectCountARB);
GLEXT_PROC(PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC, glMultiDrawElementsIndirectCountARB);

// GL_ARB_robustness
GLEXT_PROC(PFNGLGETGRAPHICSRESETSTATUSARBPROC, glGetGraphicsResetStatusARB);
GLEXT_PROC(PFNGLGETNTEXIMAGEARBPROC, glGetnTexImageARB);
GLEXT_PROC(PFNGLREADNPIXELSARBPROC, glReadnPixelsARB);
GLEXT_PROC(PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC, glGetnCompressedTexImageARB);
GLEXT_PROC(PFNGLGETNUNIFORMFVARBPROC, glGetnUniformfvARB);
GLEXT_PROC(PFNGLGETNUNIFORMIVARBPROC, glGetnUniformivARB);
GLEXT_PROC(PFNGLGETNUNIFORMUIVARBPROC, glGetnUniformuivARB);
GLEXT_PROC(PFNGLGETNUNIFORMDVARBPROC, glGetnUniformdvARB);

// GL_ARB_sample_shading
GLEXT_PROC(PFNGLMINSAMPLESHADINGARBPROC, glMinSampleShadingARB);

// GL_ARB_shading_language_include
GLEXT_PROC(PFNGLNAMEDSTRINGARBPROC, glNamedStringARB);
GLEXT_PROC(PFNGLDELETENAMEDSTRINGARBPROC, glDeleteNamedStringARB);
GLEXT_PROC(PFNGLCOMPILESHADERINCLUDEARBPROC, glCompileShaderIncludeARB);
GLEXT_PROC(PFNGLISNAMEDSTRINGARBPROC, glIsNamedStringARB);
GLEXT_PROC(PFNGLGETNAMEDSTRINGARBPROC, glGetNamedStringARB);
GLEXT_PROC(PFNGLGETNAMEDSTRINGIVARBPROC, glGetNamedStringivARB);

// GL_ARB_sparse_texture
GLEXT_PROC(PFNGLTEXPAGECOMMITMENTARBPROC, glTexPageCommitmentARB);

// GL_ARB_draw_instanced
GLEXT_PROC(PFNGLDRAWARRAYSINSTANCEDARBPROC, glDrawArraysInstancedARB);
GLEXT_PROC(PFNGLDRAWELEMENTSINSTANCEDARBPROC, glDrawElementsInstancedARB);

// GL_ARB_geometry_shader4
GLEXT_PROC(PFNGLPROGRAMPARAMETERIARBPROC, glProgramParameteriARB);
GLEXT_PROC(PFNGLFRAMEBUFFERTEXTUREARBPROC, glFramebufferTextureARB);
GLEXT_PROC(PFNGLFRAMEBUFFERTEXTURELAYERARBPROC, glFramebufferTextureLayerARB);
GLEXT_PROC(PFNGLFRAMEBUFFERTEXTUREFACEARBPROC, glFramebufferTextureFaceARB);

// GL_ARB_gl_spirv
GLEXT_PROC(PFNGLSPECIALIZESHADERARBPROC, glSpecializeShaderARB);

// GL_ARB_gpu_shader_int64
GLEXT_PROC(PFNGLUNIFORM1I64ARBPROC, glUniform1i64ARB);
GLEXT_PROC(PFNGLUNIFORM2I64ARBPROC, glUniform2i64ARB);
GLEXT_PROC(PFNGLUNIFORM3I64ARBPROC, glUniform3i64ARB);
GLEXT_PROC(PFNGLUNIFORM4I64ARBPROC, glUniform4i64ARB);
GLEXT_PROC(PFNGLUNIFORM1I64VARBPROC, glUniform1i64vARB);
GLEXT_PROC(PFNGLUNIFORM2I64VARBPROC, glUniform2i64vARB);
GLEXT_PROC(PFNGLUNIFORM3I64VARBPROC, glUniform3i64vARB);
GLEXT_PROC(PFNGLUNIFORM4I64VARBPROC, glUniform4i64vARB);
GLEXT_PROC(PFNGLUNIFORM1UI64ARBPROC, glUniform1ui64ARB);
GLEXT_PROC(PFNGLUNIFORM2UI64ARBPROC, glUniform2ui64ARB);
GLEXT_PROC(PFNGLUNIFORM3UI64ARBPROC, glUniform3ui64ARB);
GLEXT_PROC(PFNGLUNIFORM4UI64ARBPROC, glUniform4ui64ARB);
GLEXT_PROC(PFNGLUNIFORM1UI64VARBPROC, glUniform1ui64vARB);
GLEXT_PROC(PFNGLUNIFORM2UI64VARBPROC, glUniform2ui64vARB);
GLEXT_PROC(PFNGLUNIFORM3UI64VARBPROC, glUniform3ui64vARB);
GLEXT_PROC(PFNGLUNIFORM4UI64VARBPROC, glUniform4ui64vARB);
GLEXT_PROC(PFNGLGETUNIFORMI64VARBPROC, glGetUniformi64vARB);
GLEXT_PROC(PFNGLGETUNIFORMUI64VARBPROC, glGetUniformui64vARB);
GLEXT_PROC(PFNGLGETNUNIFORMI64VARBPROC, glGetnUniformi64vARB);
GLEXT_PROC(PFNGLGETNUNIFORMUI64VARBPROC, glGetnUniformui64vARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1I64ARBPROC, glProgramUniform1i64ARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2I64ARBPROC, glProgramUniform2i64ARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3I64ARBPROC, glProgramUniform3i64ARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4I64ARBPROC, glProgramUniform4i64ARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1I64VARBPROC, glProgramUniform1i64vARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2I64VARBPROC, glProgramUniform2i64vARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3I64VARBPROC, glProgramUniform3i64vARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4I64VARBPROC, glProgramUniform4i64vARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1UI64ARBPROC, glProgramUniform1ui64ARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2UI64ARBPROC, glProgramUniform2ui64ARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3UI64ARBPROC, glProgramUniform3ui64ARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4UI64ARBPROC, glProgramUniform4ui64ARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1UI64VARBPROC, glProgramUniform1ui64vARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2UI64VARBPROC, glProgramUniform2ui64vARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3UI64VARBPROC, glProgramUniform3ui64vARB);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4UI64VARBPROC, glProgramUniform4ui64vARB);

// GL_ARB_instanced_arrays
GLEXT_PROC(PFNGLVERTEXATTRIBDIVISORARBPROC, glVertexAttribDivisorARB);

// GL_ARB_parallel_shader_compile
GLEXT_PROC(PFNGLMAXSHADERCOMPILERTHREADSARBPROC, glMaxShaderCompilerThreadsARB);

// GL_ARB_sample_locations
GLEXT_PROC(PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC, glFramebufferSampleLocationsfvARB);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC, glNamedFramebufferSampleLocationsfvARB);
GLEXT_PROC(PFNGLEVALUATEDEPTHVALUESARBPROC, glEvaluateDepthValuesARB);

// GL_ARB_texture_buffer_object
GLEXT_PROC(PFNGLTEXBUFFERARBPROC, glTexBufferARB);

// ---------------------------------------------------------------------------------
// EXT
// ---------------------------------------------------------------------------------

// GL_EXT_debug_label
GLEXT_PROC(PFNGLLABELOBJECTEXTPROC, glLabelObjectEXT);
GLEXT_PROC(PFNGLGETOBJECTLABELEXTPROC, glGetObjectLabelEXT);

// GL_EXT_debug_marker
GLEXT_PROC(PFNGLINSERTEVENTMARKEREXTPROC, glInsertEventMarkerEXT);
GLEXT_PROC(PFNGLPUSHGROUPMARKEREXTPROC, glPushGroupMarkerEXT);
GLEXT_PROC(PFNGLPOPGROUPMARKEREXTPROC, glPopGroupMarkerEXT);

// GL_EXT_draw_instanced
GLEXT_PROC(PFNGLDRAWARRAYSINSTANCEDEXTPROC, glDrawArraysInstancedEXT);
GLEXT_PROC(PFNGLDRAWELEMENTSINSTANCEDEXTPROC, glDrawElementsInstancedEXT);

// GL_EXT_polygon_offset_clamp
GLEXT_PROC(PFNGLPOLYGONOFFSETCLAMPEXTPROC, glPolygonOffsetClampEXT);

// GL_EXT_raster_multisample
GLEXT_PROC(PFNGLRASTERSAMPLESEXTPROC, glRasterSamplesEXT);

// GL_EXT_separate_shader_objects
GLEXT_PROC(PFNGLUSESHADERPROGRAMEXTPROC, glUseShaderProgramEXT);
GLEXT_PROC(PFNGLACTIVEPROGRAMEXTPROC, glActiveProgramEXT);
GLEXT_PROC(PFNGLCREATESHADERPROGRAMEXTPROC, glCreateShaderProgramEXT);

// GL_EXT_window_rectangles
GLEXT_PROC(PFNGLWINDOWRECTANGLESEXTPROC, glWindowRectanglesEXT);

// GL_EXT_EGL_image_storage
GLEXT_PROC(PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC, glEGLImageTargetTexStorageEXT);
GLEXT_PROC(PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC, glEGLImageTargetTextureStorageEXT);

// GL_EXT_direct_state_access
GLEXT_PROC(PFNGLMATRIXLOADFEXTPROC, glMatrixLoadfEXT);
GLEXT_PROC(PFNGLMATRIXLOADDEXTPROC, glMatrixLoaddEXT);
GLEXT_PROC(PFNGLMATRIXMULTFEXTPROC, glMatrixMultfEXT);
GLEXT_PROC(PFNGLMATRIXMULTDEXTPROC, glMatrixMultdEXT);
GLEXT_PROC(PFNGLMATRIXLOADIDENTITYEXTPROC, glMatrixLoadIdentityEXT);
GLEXT_PROC(PFNGLMATRIXROTATEFEXTPROC, glMatrixRotatefEXT);
GLEXT_PROC(PFNGLMATRIXROTATEDEXTPROC, glMatrixRotatedEXT);
GLEXT_PROC(PFNGLMATRIXSCALEFEXTPROC, glMatrixScalefEXT);
GLEXT_PROC(PFNGLMATRIXSCALEDEXTPROC, glMatrixScaledEXT);
GLEXT_PROC(PFNGLMATRIXTRANSLATEFEXTPROC, glMatrixTranslatefEXT);
GLEXT_PROC(PFNGLMATRIXTRANSLATEDEXTPROC, glMatrixTranslatedEXT);
GLEXT_PROC(PFNGLMATRIXFRUSTUMEXTPROC, glMatrixFrustumEXT);
GLEXT_PROC(PFNGLMATRIXORTHOEXTPROC, glMatrixOrthoEXT);
GLEXT_PROC(PFNGLMATRIXPOPEXTPROC, glMatrixPopEXT);
GLEXT_PROC(PFNGLMATRIXPUSHEXTPROC, glMatrixPushEXT);
GLEXT_PROC(PFNGLCLIENTATTRIBDEFAULTEXTPROC, glClientAttribDefaultEXT);
GLEXT_PROC(PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC, glPushClientAttribDefaultEXT);
GLEXT_PROC(PFNGLTEXTUREPARAMETERFEXTPROC, glTextureParameterfEXT);
GLEXT_PROC(PFNGLTEXTUREPARAMETERFVEXTPROC, glTextureParameterfvEXT);
GLEXT_PROC(PFNGLTEXTUREPARAMETERIEXTPROC, glTextureParameteriEXT);
GLEXT_PROC(PFNGLTEXTUREPARAMETERIVEXTPROC, glTextureParameterivEXT);
GLEXT_PROC(PFNGLTEXTUREIMAGE1DEXTPROC, glTextureImage1DEXT);
GLEXT_PROC(PFNGLTEXTUREIMAGE2DEXTPROC, glTextureImage2DEXT);
GLEXT_PROC(PFNGLTEXTURESUBIMAGE1DEXTPROC, glTextureSubImage1DEXT);
GLEXT_PROC(PFNGLTEXTURESUBIMAGE2DEXTPROC, glTextureSubImage2DEXT);
GLEXT_PROC(PFNGLCOPYTEXTUREIMAGE1DEXTPROC, glCopyTextureImage1DEXT);
GLEXT_PROC(PFNGLCOPYTEXTUREIMAGE2DEXTPROC, glCopyTextureImage2DEXT);
GLEXT_PROC(PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC, glCopyTextureSubImage1DEXT);
GLEXT_PROC(PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC, glCopyTextureSubImage2DEXT);
GLEXT_PROC(PFNGLGETTEXTUREIMAGEEXTPROC, glGetTextureImageEXT);
GLEXT_PROC(PFNGLGETTEXTUREPARAMETERFVEXTPROC, glGetTextureParameterfvEXT);
GLEXT_PROC(PFNGLGETTEXTUREPARAMETERIVEXTPROC, glGetTextureParameterivEXT);
GLEXT_PROC(PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC, glGetTextureLevelParameterfvEXT);
GLEXT_PROC(PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC, glGetTextureLevelParameterivEXT);
GLEXT_PROC(PFNGLTEXTUREIMAGE3DEXTPROC, glTextureImage3DEXT);
GLEXT_PROC(PFNGLTEXTURESUBIMAGE3DEXTPROC, glTextureSubImage3DEXT);
GLEXT_PROC(PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC, glCopyTextureSubImage3DEXT);
GLEXT_PROC(PFNGLBINDMULTITEXTUREEXTPROC, glBindMultiTextureEXT);
GLEXT_PROC(PFNGLMULTITEXCOORDPOINTEREXTPROC, glMultiTexCoordPointerEXT);
GLEXT_PROC(PFNGLMULTITEXENVFEXTPROC, glMultiTexEnvfEXT);
GLEXT_PROC(PFNGLMULTITEXENVFVEXTPROC, glMultiTexEnvfvEXT);
GLEXT_PROC(PFNGLMULTITEXENVIEXTPROC, glMultiTexEnviEXT);
GLEXT_PROC(PFNGLMULTITEXENVIVEXTPROC, glMultiTexEnvivEXT);
GLEXT_PROC(PFNGLMULTITEXGENDEXTPROC, glMultiTexGendEXT);
GLEXT_PROC(PFNGLMULTITEXGENDVEXTPROC, glMultiTexGendvEXT);
GLEXT_PROC(PFNGLMULTITEXGENFEXTPROC, glMultiTexGenfEXT);
GLEXT_PROC(PFNGLMULTITEXGENFVEXTPROC, glMultiTexGenfvEXT);
GLEXT_PROC(PFNGLMULTITEXGENIEXTPROC, glMultiTexGeniEXT);
GLEXT_PROC(PFNGLMULTITEXGENIVEXTPROC, glMultiTexGenivEXT);
GLEXT_PROC(PFNGLGETMULTITEXENVFVEXTPROC, glGetMultiTexEnvfvEXT);
GLEXT_PROC(PFNGLGETMULTITEXENVIVEXTPROC, glGetMultiTexEnvivEXT);
GLEXT_PROC(PFNGLGETMULTITEXGENDVEXTPROC, glGetMultiTexGendvEXT);
GLEXT_PROC(PFNGLGETMULTITEXGENFVEXTPROC, glGetMultiTexGenfvEXT);
GLEXT_PROC(PFNGLGETMULTITEXGENIVEXTPROC, glGetMultiTexGenivEXT);
GLEXT_PROC(PFNGLMULTITEXPARAMETERIEXTPROC, glMultiTexParameteriEXT);
GLEXT_PROC(PFNGLMULTITEXPARAMETERIVEXTPROC, glMultiTexParameterivEXT);
GLEXT_PROC(PFNGLMULTITEXPARAMETERFEXTPROC, glMultiTexParameterfEXT);
GLEXT_PROC(PFNGLMULTITEXPARAMETERFVEXTPROC, glMultiTexParameterfvEXT);
GLEXT_PROC(PFNGLMULTITEXIMAGE1DEXTPROC, glMultiTexImage1DEXT);
GLEXT_PROC(PFNGLMULTITEXIMAGE2DEXTPROC, glMultiTexImage2DEXT);
GLEXT_PROC(PFNGLMULTITEXSUBIMAGE1DEXTPROC, glMultiTexSubImage1DEXT);
GLEXT_PROC(PFNGLMULTITEXSUBIMAGE2DEXTPROC, glMultiTexSubImage2DEXT);
GLEXT_PROC(PFNGLCOPYMULTITEXIMAGE1DEXTPROC, glCopyMultiTexImage1DEXT);
GLEXT_PROC(PFNGLCOPYMULTITEXIMAGE2DEXTPROC, glCopyMultiTexImage2DEXT);
GLEXT_PROC(PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC, glCopyMultiTexSubImage1DEXT);
GLEXT_PROC(PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC, glCopyMultiTexSubImage2DEXT);
GLEXT_PROC(PFNGLGETMULTITEXIMAGEEXTPROC, glGetMultiTexImageEXT);
GLEXT_PROC(PFNGLGETMULTITEXPARAMETERFVEXTPROC, glGetMultiTexParameterfvEXT);
GLEXT_PROC(PFNGLGETMULTITEXPARAMETERIVEXTPROC, glGetMultiTexParameterivEXT);
GLEXT_PROC(PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC, glGetMultiTexLevelParameterfvEXT);
GLEXT_PROC(PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC, glGetMultiTexLevelParameterivEXT);
GLEXT_PROC(PFNGLMULTITEXIMAGE3DEXTPROC, glMultiTexImage3DEXT);
GLEXT_PROC(PFNGLMULTITEXSUBIMAGE3DEXTPROC, glMultiTexSubImage3DEXT);
GLEXT_PROC(PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC, glCopyMultiTexSubImage3DEXT);
GLEXT_PROC(PFNGLENABLECLIENTSTATEINDEXEDEXTPROC, glEnableClientStateIndexedEXT);
GLEXT_PROC(PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC, glDisableClientStateIndexedEXT);
GLEXT_PROC(PFNGLGETFLOATINDEXEDVEXTPROC, glGetFloatIndexedvEXT);
GLEXT_PROC(PFNGLGETDOUBLEINDEXEDVEXTPROC, glGetDoubleIndexedvEXT);
GLEXT_PROC(PFNGLGETPOINTERINDEXEDVEXTPROC, glGetPointerIndexedvEXT);
GLEXT_PROC(PFNGLENABLEINDEXEDEXTPROC, glEnableIndexedEXT);
GLEXT_PROC(PFNGLDISABLEINDEXEDEXTPROC, glDisableIndexedEXT);
GLEXT_PROC(PFNGLISENABLEDINDEXEDEXTPROC, glIsEnabledIndexedEXT);
GLEXT_PROC(PFNGLGETINTEGERINDEXEDVEXTPROC, glGetIntegerIndexedvEXT);
GLEXT_PROC(PFNGLGETBOOLEANINDEXEDVEXTPROC, glGetBooleanIndexedvEXT);
GLEXT_PROC(PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC, glCompressedTextureImage3DEXT);
GLEXT_PROC(PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC, glCompressedTextureImage2DEXT);
GLEXT_PROC(PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC, glCompressedTextureImage1DEXT);
GLEXT_PROC(PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC, glCompressedTextureSubImage3DEXT);
GLEXT_PROC(PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC, glCompressedTextureSubImage2DEXT);
GLEXT_PROC(PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC, glCompressedTextureSubImage1DEXT);
GLEXT_PROC(PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC, glGetCompressedTextureImageEXT);
GLEXT_PROC(PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC, glCompressedMultiTexImage3DEXT);
GLEXT_PROC(PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC, glCompressedMultiTexImage2DEXT);
GLEXT_PROC(PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC, glCompressedMultiTexImage1DEXT);
GLEXT_PROC(PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC, glCompressedMultiTexSubImage3DEXT);
GLEXT_PROC(PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC, glCompressedMultiTexSubImage2DEXT);
GLEXT_PROC(PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC, glCompressedMultiTexSubImage1DEXT);
GLEXT_PROC(PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC, glGetCompressedMultiTexImageEXT);
GLEXT_PROC(PFNGLMATRIXLOADTRANSPOSEFEXTPROC, glMatrixLoadTransposefEXT);
GLEXT_PROC(PFNGLMATRIXLOADTRANSPOSEDEXTPROC, glMatrixLoadTransposedEXT);
GLEXT_PROC(PFNGLMATRIXMULTTRANSPOSEFEXTPROC, glMatrixMultTransposefEXT);
GLEXT_PROC(PFNGLMATRIXMULTTRANSPOSEDEXTPROC, glMatrixMultTransposedEXT);
GLEXT_PROC(PFNGLNAMEDBUFFERDATAEXTPROC, glNamedBufferDataEXT);
GLEXT_PROC(PFNGLNAMEDBUFFERSUBDATAEXTPROC, glNamedBufferSubDataEXT);
GLEXT_PROC(PFNGLMAPNAMEDBUFFEREXTPROC, glMapNamedBufferEXT);
GLEXT_PROC(PFNGLUNMAPNAMEDBUFFEREXTPROC, glUnmapNamedBufferEXT);
GLEXT_PROC(PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC, glGetNamedBufferParameterivEXT);
GLEXT_PROC(PFNGLGETNAMEDBUFFERPOINTERVEXTPROC, glGetNamedBufferPointervEXT);
GLEXT_PROC(PFNGLGETNAMEDBUFFERSUBDATAEXTPROC, glGetNamedBufferSubDataEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1FEXTPROC, glProgramUniform1fEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2FEXTPROC, glProgramUniform2fEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3FEXTPROC, glProgramUniform3fEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4FEXTPROC, glProgramUniform4fEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1IEXTPROC, glProgramUniform1iEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2IEXTPROC, glProgramUniform2iEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3IEXTPROC, glProgramUniform3iEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4IEXTPROC, glProgramUniform4iEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1FVEXTPROC, glProgramUniform1fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2FVEXTPROC, glProgramUniform2fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3FVEXTPROC, glProgramUniform3fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4FVEXTPROC, glProgramUniform4fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1IVEXTPROC, glProgramUniform1ivEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2IVEXTPROC, glProgramUniform2ivEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3IVEXTPROC, glProgramUniform3ivEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4IVEXTPROC, glProgramUniform4ivEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC, glProgramUniformMatrix2fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC, glProgramUniformMatrix3fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC, glProgramUniformMatrix4fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC, glProgramUniformMatrix2x3fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC, glProgramUniformMatrix3x2fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC, glProgramUniformMatrix2x4fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC, glProgramUniformMatrix4x2fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC, glProgramUniformMatrix3x4fvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC, glProgramUniformMatrix4x3fvEXT);
GLEXT_PROC(PFNGLTEXTUREBUFFEREXTPROC, glTextureBufferEXT);
GLEXT_PROC(PFNGLMULTITEXBUFFEREXTPROC, glMultiTexBufferEXT);
GLEXT_PROC(PFNGLTEXTUREPARAMETERIIVEXTPROC, glTextureParameterIivEXT);
GLEXT_PROC(PFNGLTEXTUREPARAMETERIUIVEXTPROC, glTextureParameterIuivEXT);
GLEXT_PROC(PFNGLGETTEXTUREPARAMETERIIVEXTPROC, glGetTextureParameterIivEXT);
GLEXT_PROC(PFNGLGETTEXTUREPARAMETERIUIVEXTPROC, glGetTextureParameterIuivEXT);
GLEXT_PROC(PFNGLMULTITEXPARAMETERIIVEXTPROC, glMultiTexParameterIivEXT);
GLEXT_PROC(PFNGLMULTITEXPARAMETERIUIVEXTPROC, glMultiTexParameterIuivEXT);
GLEXT_PROC(PFNGLGETMULTITEXPARAMETERIIVEXTPROC, glGetMultiTexParameterIivEXT);
GLEXT_PROC(PFNGLGETMULTITEXPARAMETERIUIVEXTPROC, glGetMultiTexParameterIuivEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1UIEXTPROC, glProgramUniform1uiEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2UIEXTPROC, glProgramUniform2uiEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3UIEXTPROC, glProgramUniform3uiEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4UIEXTPROC, glProgramUniform4uiEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1UIVEXTPROC, glProgramUniform1uivEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2UIVEXTPROC, glProgramUniform2uivEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3UIVEXTPROC, glProgramUniform3uivEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4UIVEXTPROC, glProgramUniform4uivEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC, glNamedProgramLocalParameters4fvEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC, glNamedProgramLocalParameterI4iEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC, glNamedProgramLocalParameterI4ivEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC, glNamedProgramLocalParametersI4ivEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC, glNamedProgramLocalParameterI4uiEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC, glNamedProgramLocalParameterI4uivEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC, glNamedProgramLocalParametersI4uivEXT);
GLEXT_PROC(PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC, glGetNamedProgramLocalParameterIivEXT);
GLEXT_PROC(PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC, glGetNamedProgramLocalParameterIuivEXT);
GLEXT_PROC(PFNGLENABLECLIENTSTATEIEXTPROC, glEnableClientStateiEXT);
GLEXT_PROC(PFNGLDISABLECLIENTSTATEIEXTPROC, glDisableClientStateiEXT);
GLEXT_PROC(PFNGLGETFLOATI_VEXTPROC, glGetFloati_vEXT);
GLEXT_PROC(PFNGLGETDOUBLEI_VEXTPROC, glGetDoublei_vEXT);
GLEXT_PROC(PFNGLGETPOINTERI_VEXTPROC, glGetPointeri_vEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMSTRINGEXTPROC, glNamedProgramStringEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC, glNamedProgramLocalParameter4dEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC, glNamedProgramLocalParameter4dvEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC, glNamedProgramLocalParameter4fEXT);
GLEXT_PROC(PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC, glNamedProgramLocalParameter4fvEXT);
GLEXT_PROC(PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC, glGetNamedProgramLocalParameterdvEXT);
GLEXT_PROC(PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC, glGetNamedProgramLocalParameterfvEXT);
GLEXT_PROC(PFNGLGETNAMEDPROGRAMIVEXTPROC, glGetNamedProgramivEXT);
GLEXT_PROC(PFNGLGETNAMEDPROGRAMSTRINGEXTPROC, glGetNamedProgramStringEXT);
GLEXT_PROC(PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC, glNamedRenderbufferStorageEXT);
GLEXT_PROC(PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC, glGetNamedRenderbufferParameterivEXT);
GLEXT_PROC(PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC, glNamedRenderbufferStorageMultisampleEXT);
GLEXT_PROC(PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC, glNamedRenderbufferStorageMultisampleCoverageEXT);
GLEXT_PROC(PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC, glCheckNamedFramebufferStatusEXT);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC, glNamedFramebufferTexture1DEXT);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC, glNamedFramebufferTexture2DEXT);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC, glNamedFramebufferTexture3DEXT);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC, glNamedFramebufferRenderbufferEXT);
GLEXT_PROC(PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC, glGetNamedFramebufferAttachmentParameterivEXT);
GLEXT_PROC(PFNGLGENERATETEXTUREMIPMAPEXTPROC, glGenerateTextureMipmapEXT);
GLEXT_PROC(PFNGLGENERATEMULTITEXMIPMAPEXTPROC, glGenerateMultiTexMipmapEXT);
GLEXT_PROC(PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC, glFramebufferDrawBufferEXT);
GLEXT_PROC(PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC, glFramebufferDrawBuffersEXT);
GLEXT_PROC(PFNGLFRAMEBUFFERREADBUFFEREXTPROC, glFramebufferReadBufferEXT);
GLEXT_PROC(PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC, glGetFramebufferParameterivEXT);
GLEXT_PROC(PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC, glNamedCopyBufferSubDataEXT);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC, glNamedFramebufferTextureEXT);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC, glNamedFramebufferTextureLayerEXT);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC, glNamedFramebufferTextureFaceEXT);
GLEXT_PROC(PFNGLTEXTURERENDERBUFFEREXTPROC, glTextureRenderbufferEXT);
GLEXT_PROC(PFNGLMULTITEXRENDERBUFFEREXTPROC, glMultiTexRenderbufferEXT);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC, glVertexArrayVertexOffsetEXT);
GLEXT_PROC(PFNGLVERTEXARRAYCOLOROFFSETEXTPROC, glVertexArrayColorOffsetEXT);
GLEXT_PROC(PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC, glVertexArrayEdgeFlagOffsetEXT);
GLEXT_PROC(PFNGLVERTEXARRAYINDEXOFFSETEXTPROC, glVertexArrayIndexOffsetEXT);
GLEXT_PROC(PFNGLVERTEXARRAYNORMALOFFSETEXTPROC, glVertexArrayNormalOffsetEXT);
GLEXT_PROC(PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC, glVertexArrayTexCoordOffsetEXT);
GLEXT_PROC(PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC, glVertexArrayMultiTexCoordOffsetEXT);
GLEXT_PROC(PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC, glVertexArrayFogCoordOffsetEXT);
GLEXT_PROC(PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC, glVertexArraySecondaryColorOffsetEXT);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC, glVertexArrayVertexAttribOffsetEXT);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC, glVertexArrayVertexAttribIOffsetEXT);
GLEXT_PROC(PFNGLENABLEVERTEXARRAYEXTPROC, glEnableVertexArrayEXT);
GLEXT_PROC(PFNGLDISABLEVERTEXARRAYEXTPROC, glDisableVertexArrayEXT);
GLEXT_PROC(PFNGLENABLEVERTEXARRAYATTRIBEXTPROC, glEnableVertexArrayAttribEXT);
GLEXT_PROC(PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC, glDisableVertexArrayAttribEXT);
GLEXT_PROC(PFNGLGETVERTEXARRAYINTEGERVEXTPROC, glGetVertexArrayIntegervEXT);
GLEXT_PROC(PFNGLGETVERTEXARRAYPOINTERVEXTPROC, glGetVertexArrayPointervEXT);
GLEXT_PROC(PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC, glGetVertexArrayIntegeri_vEXT);
GLEXT_PROC(PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC, glGetVertexArrayPointeri_vEXT);
GLEXT_PROC(PFNGLMAPNAMEDBUFFERRANGEEXTPROC, glMapNamedBufferRangeEXT);
GLEXT_PROC(PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC, glFlushMappedNamedBufferRangeEXT);
GLEXT_PROC(PFNGLNAMEDBUFFERSTORAGEEXTPROC, glNamedBufferStorageEXT);
GLEXT_PROC(PFNGLCLEARNAMEDBUFFERDATAEXTPROC, glClearNamedBufferDataEXT);
GLEXT_PROC(PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC, glClearNamedBufferSubDataEXT);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC, glNamedFramebufferParameteriEXT);
GLEXT_PROC(PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC, glGetNamedFramebufferParameterivEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1DEXTPROC, glProgramUniform1dEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2DEXTPROC, glProgramUniform2dEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3DEXTPROC, glProgramUniform3dEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4DEXTPROC, glProgramUniform4dEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1DVEXTPROC, glProgramUniform1dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2DVEXTPROC, glProgramUniform2dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3DVEXTPROC, glProgramUniform3dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4DVEXTPROC, glProgramUniform4dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC, glProgramUniformMatrix2dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC, glProgramUniformMatrix3dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC, glProgramUniformMatrix4dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC, glProgramUniformMatrix2x3dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC, glProgramUniformMatrix2x4dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC, glProgramUniformMatrix3x2dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC, glProgramUniformMatrix3x4dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC, glProgramUniformMatrix4x2dvEXT);
GLEXT_PROC(PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC, glProgramUniformMatrix4x3dvEXT);
GLEXT_PROC(PFNGLTEXTUREBUFFERRANGEEXTPROC, glTextureBufferRangeEXT);
GLEXT_PROC(PFNGLTEXTURESTORAGE1DEXTPROC, glTextureStorage1DEXT);
GLEXT_PROC(PFNGLTEXTURESTORAGE2DEXTPROC, glTextureStorage2DEXT);
GLEXT_PROC(PFNGLTEXTURESTORAGE3DEXTPROC, glTextureStorage3DEXT);
GLEXT_PROC(PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC, glTextureStorage2DMultisampleEXT);
GLEXT_PROC(PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC, glTextureStorage3DMultisampleEXT);
GLEXT_PROC(PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC, glVertexArrayBindVertexBufferEXT);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC, glVertexArrayVertexAttribFormatEXT);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC, glVertexArrayVertexAttribIFormatEXT);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC, glVertexArrayVertexAttribLFormatEXT);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC, glVertexArrayVertexAttribBindingEXT);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC, glVertexArrayVertexBindingDivisorEXT);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC, glVertexArrayVertexAttribLOffsetEXT);
GLEXT_PROC(PFNGLTEXTUREPAGECOMMITMENTEXTPROC, glTexturePageCommitmentEXT);
GLEXT_PROC(PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC, glVertexArrayVertexAttribDivisorEXT);

// GL_EXT_shader_framebuffer_fetch_non_coherent
GLEXT_PROC(PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC, glFramebufferFetchBarrierEXT);

// ---------------------------------------------------------------------------------
// INTEL
// ---------------------------------------------------------------------------------

// GL_INTEL_framebuffer_CMAA
GLEXT_PROC(PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC, glApplyFramebufferAttachmentCMAAINTEL);

// GL_INTEL_performance_query
GLEXT_PROC(PFNGLBEGINPERFQUERYINTELPROC, glBeginPerfQueryINTEL);
GLEXT_PROC(PFNGLCREATEPERFQUERYINTELPROC, glCreatePerfQueryINTEL);
GLEXT_PROC(PFNGLDELETEPERFQUERYINTELPROC, glDeletePerfQueryINTEL);
GLEXT_PROC(PFNGLENDPERFQUERYINTELPROC, glEndPerfQueryINTEL);
GLEXT_PROC(PFNGLGETFIRSTPERFQUERYIDINTELPROC, glGetFirstPerfQueryIdINTEL);
GLEXT_PROC(PFNGLGETNEXTPERFQUERYIDINTELPROC, glGetNextPerfQueryIdINTEL);
GLEXT_PROC(PFNGLGETPERFCOUNTERINFOINTELPROC, glGetPerfCounterInfoINTEL);
GLEXT_PROC(PFNGLGETPERFQUERYDATAINTELPROC, glGetPerfQueryDataINTEL);
GLEXT_PROC(PFNGLGETPERFQUERYIDBYNAMEINTELPROC, glGetPerfQueryIdByNameINTEL);
GLEXT_PROC(PFNGLGETPERFQUERYINFOINTELPROC, glGetPerfQueryInfoINTEL);

// ---------------------------------------------------------------------------------
// NV
// ---------------------------------------------------------------------------------

// GL_NV_bindless_texture
GLEXT_PROC(PFNGLGETTEXTUREHANDLENVPROC, glGetTextureHandleNV);
GLEXT_PROC(PFNGLGETTEXTURESAMPLERHANDLENVPROC, glGetTextureSamplerHandleNV);
GLEXT_PROC(PFNGLMAKETEXTUREHANDLERESIDENTNVPROC, glMakeTextureHandleResidentNV);
GLEXT_PROC(PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC, glMakeTextureHandleNonResidentNV);
GLEXT_PROC(PFNGLGETIMAGEHANDLENVPROC, glGetImageHandleNV);
GLEXT_PROC(PFNGLMAKEIMAGEHANDLERESIDENTNVPROC, glMakeImageHandleResidentNV);
GLEXT_PROC(PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC, glMakeImageHandleNonResidentNV);
GLEXT_PROC(PFNGLUNIFORMHANDLEUI64NVPROC, glUniformHandleui64NV);
GLEXT_PROC(PFNGLUNIFORMHANDLEUI64VNVPROC, glUniformHandleui64vNV);
GLEXT_PROC(PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC, glProgramUniformHandleui64NV);
GLEXT_PROC(PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC, glProgramUniformHandleui64vNV);
GLEXT_PROC(PFNGLISTEXTUREHANDLERESIDENTNVPROC, glIsTextureHandleResidentNV);
GLEXT_PROC(PFNGLISIMAGEHANDLERESIDENTNVPROC, glIsImageHandleResidentNV);

// GL_NV_blend_equation_advanced
GLEXT_PROC(PFNGLBLENDPARAMETERINVPROC, glBlendParameteriNV);
GLEXT_PROC(PFNGLBLENDBARRIERNVPROC, glBlendBarrierNV);

// GL_NV_conditional_render
GLEXT_PROC(PFNGLBEGINCONDITIONALRENDERNVPROC, glBeginConditionalRenderNV);
GLEXT_PROC(PFNGLENDCONDITIONALRENDERNVPROC, glEndConditionalRenderNV);

// GL_NV_conservative_raster
GLEXT_PROC(PFNGLSUBPIXELPRECISIONBIASNVPROC, glSubpixelPrecisionBiasNV);

// GL_NV_conservative_raster_pre_snap_triangles
GLEXT_PROC(PFNGLCONSERVATIVERASTERPARAMETERINVPROC, glConservativeRasterParameteriNV);

// GL_NV_fragment_coverage_to_color
GLEXT_PROC(PFNGLFRAGMENTCOVERAGECOLORNVPROC, glFragmentCoverageColorNV);

// GL_NV_framebuffer_mixed_samples
GLEXT_PROC(PFNGLCOVERAGEMODULATIONTABLENVPROC, glCoverageModulationTableNV);
GLEXT_PROC(PFNGLGETCOVERAGEMODULATIONTABLENVPROC, glGetCoverageModulationTableNV);
GLEXT_PROC(PFNGLCOVERAGEMODULATIONNVPROC, glCoverageModulationNV);

// GL_NV_gpu_shader5
GLEXT_PROC(PFNGLUNIFORM1I64NVPROC, glUniform1i64NV);
GLEXT_PROC(PFNGLUNIFORM2I64NVPROC, glUniform2i64NV);
GLEXT_PROC(PFNGLUNIFORM3I64NVPROC, glUniform3i64NV);
GLEXT_PROC(PFNGLUNIFORM4I64NVPROC, glUniform4i64NV);
GLEXT_PROC(PFNGLUNIFORM1I64VNVPROC, glUniform1i64vNV);
GLEXT_PROC(PFNGLUNIFORM2I64VNVPROC, glUniform2i64vNV);
GLEXT_PROC(PFNGLUNIFORM3I64VNVPROC, glUniform3i64vNV);
GLEXT_PROC(PFNGLUNIFORM4I64VNVPROC, glUniform4i64vNV);
GLEXT_PROC(PFNGLUNIFORM1UI64NVPROC, glUniform1ui64NV);
GLEXT_PROC(PFNGLUNIFORM2UI64NVPROC, glUniform2ui64NV);
GLEXT_PROC(PFNGLUNIFORM3UI64NVPROC, glUniform3ui64NV);
GLEXT_PROC(PFNGLUNIFORM4UI64NVPROC, glUniform4ui64NV);
GLEXT_PROC(PFNGLUNIFORM1UI64VNVPROC, glUniform1ui64vNV);
GLEXT_PROC(PFNGLUNIFORM2UI64VNVPROC, glUniform2ui64vNV);
GLEXT_PROC(PFNGLUNIFORM3UI64VNVPROC, glUniform3ui64vNV);
GLEXT_PROC(PFNGLUNIFORM4UI64VNVPROC, glUniform4ui64vNV);
GLEXT_PROC(PFNGLGETUNIFORMI64VNVPROC, glGetUniformi64vNV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1I64NVPROC, glProgramUniform1i64NV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2I64NVPROC, glProgramUniform2i64NV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3I64NVPROC, glProgramUniform3i64NV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4I64NVPROC, glProgramUniform4i64NV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1I64VNVPROC, glProgramUniform1i64vNV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2I64VNVPROC, glProgramUniform2i64vNV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3I64VNVPROC, glProgramUniform3i64vNV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4I64VNVPROC, glProgramUniform4i64vNV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1UI64NVPROC, glProgramUniform1ui64NV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2UI64NVPROC, glProgramUniform2ui64NV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3UI64NVPROC, glProgramUniform3ui64NV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4UI64NVPROC, glProgramUniform4ui64NV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM1UI64VNVPROC, glProgramUniform1ui64vNV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM2UI64VNVPROC, glProgramUniform2ui64vNV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM3UI64VNVPROC, glProgramUniform3ui64vNV);
GLEXT_PROC(PFNGLPROGRAMUNIFORM4UI64VNVPROC, glProgramUniform4ui64vNV);

// GL_NV_internalformat_sample_query
GLEXT_PROC(PFNGLGETINTERNALFORMATSAMPLEIVNVPROC, glGetInternalformatSampleivNV);

// GL_NV_path_rendering
GLEXT_PROC(PFNGLGENPATHSNVPROC, glGenPathsNV);
GLEXT_PROC(PFNGLDELETEPATHSNVPROC, glDeletePathsNV);
GLEXT_PROC(PFNGLISPATHNVPROC, glIsPathNV);
GLEXT_PROC(PFNGLPATHCOMMANDSNVPROC, glPathCommandsNV);
GLEXT_PROC(PFNGLPATHCOORDSNVPROC, glPathCoordsNV);
GLEXT_PROC(PFNGLPATHSUBCOMMANDSNVPROC, glPathSubCommandsNV);
GLEXT_PROC(PFNGLPATHSUBCOORDSNVPROC, glPathSubCoordsNV);
GLEXT_PROC(PFNGLPATHSTRINGNVPROC, glPathStringNV);
GLEXT_PROC(PFNGLPATHGLYPHSNVPROC, glPathGlyphsNV);
GLEXT_PROC(PFNGLPATHGLYPHRANGENVPROC, glPathGlyphRangeNV);
GLEXT_PROC(PFNGLWEIGHTPATHSNVPROC, glWeightPathsNV);
GLEXT_PROC(PFNGLCOPYPATHNVPROC, glCopyPathNV);
GLEXT_PROC(PFNGLINTERPOLATEPATHSNVPROC, glInterpolatePathsNV);
GLEXT_PROC(PFNGLTRANSFORMPATHNVPROC, glTransformPathNV);
GLEXT_PROC(PFNGLPATHPARAMETERIVNVPROC, glPathParameterivNV);
GLEXT_PROC(PFNGLPATHPARAMETERINVPROC, glPathParameteriNV);
GLEXT_PROC(PFNGLPATHPARAMETERFVNVPROC, glPathParameterfvNV);
GLEXT_PROC(PFNGLPATHPARAMETERFNVPROC, glPathParameterfNV);
GLEXT_PROC(PFNGLPATHDASHARRAYNVPROC, glPathDashArrayNV);
GLEXT_PROC(PFNGLPATHSTENCILFUNCNVPROC, glPathStencilFuncNV);
GLEXT_PROC(PFNGLPATHSTENCILDEPTHOFFSETNVPROC, glPathStencilDepthOffsetNV);
GLEXT_PROC(PFNGLSTENCILFILLPATHNVPROC, glStencilFillPathNV);
GLEXT_PROC(PFNGLSTENCILSTROKEPATHNVPROC, glStencilStrokePathNV);
GLEXT_PROC(PFNGLSTENCILFILLPATHINSTANCEDNVPROC, glStencilFillPathInstancedNV);
GLEXT_PROC(PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC, glStencilStrokePathInstancedNV);
GLEXT_PROC(PFNGLPATHCOVERDEPTHFUNCNVPROC, glPathCoverDepthFuncNV);
#if defined(MANGO_OPENGL_CORE_PROFILE) && defined(MANGO_OPENGL_CONTEXT_WGL)
    // The following declarations are not available in Core Profile in Windows (and we don't care why)
#else
    GLEXT_PROC(PFNGLPATHCOLORGENNVPROC, glPathColorGenNV);
    GLEXT_PROC(PFNGLPATHTEXGENNVPROC, glPathTexGenNV);
    GLEXT_PROC(PFNGLPATHFOGGENNVPROC, glPathFogGenNV);
    GLEXT_PROC(PFNGLCOVERFILLPATHNVPROC, glCoverFillPathNV);
    GLEXT_PROC(PFNGLCOVERSTROKEPATHNVPROC, glCoverStrokePathNV);
    GLEXT_PROC(PFNGLCOVERFILLPATHINSTANCEDNVPROC, glCoverFillPathInstancedNV);
    GLEXT_PROC(PFNGLCOVERSTROKEPATHINSTANCEDNVPROC, glCoverStrokePathInstancedNV);
    GLEXT_PROC(PFNGLGETPATHPARAMETERIVNVPROC, glGetPathParameterivNV);
    GLEXT_PROC(PFNGLGETPATHPARAMETERFVNVPROC, glGetPathParameterfvNV);
    GLEXT_PROC(PFNGLGETPATHCOMMANDSNVPROC, glGetPathCommandsNV);
    GLEXT_PROC(PFNGLGETPATHCOORDSNVPROC, glGetPathCoordsNV);
    GLEXT_PROC(PFNGLGETPATHDASHARRAYNVPROC, glGetPathDashArrayNV);
    GLEXT_PROC(PFNGLGETPATHMETRICSNVPROC, glGetPathMetricsNV);
    GLEXT_PROC(PFNGLGETPATHMETRICRANGENVPROC, glGetPathMetricRangeNV);
    GLEXT_PROC(PFNGLGETPATHSPACINGNVPROC, glGetPathSpacingNV);
    GLEXT_PROC(PFNGLGETPATHCOLORGENIVNVPROC, glGetPathColorGenivNV);
    GLEXT_PROC(PFNGLGETPATHCOLORGENFVNVPROC, glGetPathColorGenfvNV);
    GLEXT_PROC(PFNGLGETPATHTEXGENIVNVPROC, glGetPathTexGenivNV);
    GLEXT_PROC(PFNGLGETPATHTEXGENFVNVPROC, glGetPathTexGenfvNV);
#endif
GLEXT_PROC(PFNGLISPOINTINFILLPATHNVPROC, glIsPointInFillPathNV);
GLEXT_PROC(PFNGLISPOINTINSTROKEPATHNVPROC, glIsPointInStrokePathNV);
GLEXT_PROC(PFNGLGETPATHLENGTHNVPROC, glGetPathLengthNV);
GLEXT_PROC(PFNGLPOINTALONGPATHNVPROC, glPointAlongPathNV);
GLEXT_PROC(PFNGLMATRIXLOAD3X2FNVPROC, glMatrixLoad3x2fNV);
GLEXT_PROC(PFNGLMATRIXLOAD3X3FNVPROC, glMatrixLoad3x3fNV);
GLEXT_PROC(PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC, glMatrixLoadTranspose3x3fNV);
GLEXT_PROC(PFNGLMATRIXMULT3X2FNVPROC, glMatrixMult3x2fNV);
GLEXT_PROC(PFNGLMATRIXMULT3X3FNVPROC, glMatrixMult3x3fNV);
GLEXT_PROC(PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC, glMatrixMultTranspose3x3fNV);
GLEXT_PROC(PFNGLSTENCILTHENCOVERFILLPATHNVPROC, glStencilThenCoverFillPathNV);
GLEXT_PROC(PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC, glStencilThenCoverStrokePathNV);
GLEXT_PROC(PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC, glStencilThenCoverFillPathInstancedNV);
GLEXT_PROC(PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC, glStencilThenCoverStrokePathInstancedNV);
GLEXT_PROC(PFNGLPATHGLYPHINDEXRANGENVPROC, glPathGlyphIndexRangeNV);
GLEXT_PROC(PFNGLPATHGLYPHINDEXARRAYNVPROC, glPathGlyphIndexArrayNV);
GLEXT_PROC(PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC, glPathMemoryGlyphIndexArrayNV);
GLEXT_PROC(PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC, glProgramPathFragmentInputGenNV);
GLEXT_PROC(PFNGLGETPROGRAMRESOURCEFVNVPROC, glGetProgramResourcefvNV);

// GL_NV_sample_locations
GLEXT_PROC(PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC, glFramebufferSampleLocationsfvNV);
GLEXT_PROC(PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC, glNamedFramebufferSampleLocationsfvNV);
GLEXT_PROC(PFNGLRESOLVEDEPTHVALUESNVPROC, glResolveDepthValuesNV);

// GL_NV_viewport_swizzle
GLEXT_PROC(PFNGLVIEWPORTSWIZZLENVPROC, glViewportSwizzleNV);

// GL_NV_bindless_multi_draw_indirect
GLEXT_PROC(PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC, glMultiDrawArraysIndirectBindlessNV);
GLEXT_PROC(PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC, glMultiDrawElementsIndirectBindlessNV);

// GL_NV_bindless_multi_draw_indirect_count
GLEXT_PROC(PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC, glMultiDrawArraysIndirectBindlessCountNV);
GLEXT_PROC(PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC, glMultiDrawElementsIndirectBindlessCountNV);

// GL_NV_clip_space_w_scaling
GLEXT_PROC(PFNGLVIEWPORTPOSITIONWSCALENVPROC, glViewportPositionWScaleNV);

// GL_NV_command_list
GLEXT_PROC(PFNGLCREATESTATESNVPROC, glCreateStatesNV);
GLEXT_PROC(PFNGLDELETESTATESNVPROC, glDeleteStatesNV);
GLEXT_PROC(PFNGLISSTATENVPROC, glIsStateNV);
GLEXT_PROC(PFNGLSTATECAPTURENVPROC, glStateCaptureNV);
GLEXT_PROC(PFNGLGETCOMMANDHEADERNVPROC, glGetCommandHeaderNV);
GLEXT_PROC(PFNGLGETSTAGEINDEXNVPROC, glGetStageIndexNV);
GLEXT_PROC(PFNGLDRAWCOMMANDSNVPROC, glDrawCommandsNV);
GLEXT_PROC(PFNGLDRAWCOMMANDSADDRESSNVPROC, glDrawCommandsAddressNV);
GLEXT_PROC(PFNGLDRAWCOMMANDSSTATESNVPROC, glDrawCommandsStatesNV);
GLEXT_PROC(PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC, glDrawCommandsStatesAddressNV);
GLEXT_PROC(PFNGLCREATECOMMANDLISTSNVPROC, glCreateCommandListsNV);
GLEXT_PROC(PFNGLDELETECOMMANDLISTSNVPROC, glDeleteCommandListsNV);
GLEXT_PROC(PFNGLISCOMMANDLISTNVPROC, glIsCommandListNV);
GLEXT_PROC(PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC, glListDrawCommandsStatesClientNV);
GLEXT_PROC(PFNGLCOMMANDLISTSEGMENTSNVPROC, glCommandListSegmentsNV);
GLEXT_PROC(PFNGLCOMPILECOMMANDLISTNVPROC, glCompileCommandListNV);
GLEXT_PROC(PFNGLCALLCOMMANDLISTNVPROC, glCallCommandListNV);

// GL_NV_conservative_raster_dilate
GLEXT_PROC(PFNGLCONSERVATIVERASTERPARAMETERFNVPROC, glConservativeRasterParameterfNV);

// GL_NV_draw_vulkan_image
GLEXT_PROC(PFNGLDRAWVKIMAGENVPROC, glDrawVkImageNV);
GLEXT_PROC(PFNGLGETVKPROCADDRNVPROC, glGetVkProcAddrNV);
GLEXT_PROC(PFNGLWAITVKSEMAPHORENVPROC, glWaitVkSemaphoreNV);
GLEXT_PROC(PFNGLSIGNALVKSEMAPHORENVPROC, glSignalVkSemaphoreNV);
GLEXT_PROC(PFNGLSIGNALVKFENCENVPROC, glSignalVkFenceNV);

// GL_NV_framebuffer_multisample_coverage
GLEXT_PROC(PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC, glRenderbufferStorageMultisampleCoverageNV);

// GL_NV_shader_buffer_load
GLEXT_PROC(PFNGLMAKEBUFFERRESIDENTNVPROC, glMakeBufferResidentNV);
GLEXT_PROC(PFNGLMAKEBUFFERNONRESIDENTNVPROC, glMakeBufferNonResidentNV);
GLEXT_PROC(PFNGLISBUFFERRESIDENTNVPROC, glIsBufferResidentNV);
GLEXT_PROC(PFNGLMAKENAMEDBUFFERRESIDENTNVPROC, glMakeNamedBufferResidentNV);
GLEXT_PROC(PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC, glMakeNamedBufferNonResidentNV);
GLEXT_PROC(PFNGLISNAMEDBUFFERRESIDENTNVPROC, glIsNamedBufferResidentNV);
GLEXT_PROC(PFNGLGETBUFFERPARAMETERUI64VNVPROC, glGetBufferParameterui64vNV);
GLEXT_PROC(PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC, glGetNamedBufferParameterui64vNV);
GLEXT_PROC(PFNGLGETINTEGERUI64VNVPROC, glGetIntegerui64vNV);
GLEXT_PROC(PFNGLUNIFORMUI64NVPROC, glUniformui64NV);
GLEXT_PROC(PFNGLUNIFORMUI64VNVPROC, glUniformui64vNV);
GLEXT_PROC(PFNGLPROGRAMUNIFORMUI64NVPROC, glProgramUniformui64NV);
GLEXT_PROC(PFNGLPROGRAMUNIFORMUI64VNVPROC, glProgramUniformui64vNV);
//GLEXT_PROC(PFNGLGETUNIFORMUI64VNVPROC, glGetUniformui64vNV);

// GL_NV_texture_barrier
GLEXT_PROC(PFNGLTEXTUREBARRIERNVPROC, glTextureBarrierNV);

// GL_NV_vertex_attrib_integer_64bit
GLEXT_PROC(PFNGLVERTEXATTRIBL1I64NVPROC, glVertexAttribL1i64NV);
GLEXT_PROC(PFNGLVERTEXATTRIBL2I64NVPROC, glVertexAttribL2i64NV);
GLEXT_PROC(PFNGLVERTEXATTRIBL3I64NVPROC, glVertexAttribL3i64NV);
GLEXT_PROC(PFNGLVERTEXATTRIBL4I64NVPROC, glVertexAttribL4i64NV);
GLEXT_PROC(PFNGLVERTEXATTRIBL1I64VNVPROC, glVertexAttribL1i64vNV);
GLEXT_PROC(PFNGLVERTEXATTRIBL2I64VNVPROC, glVertexAttribL2i64vNV);
GLEXT_PROC(PFNGLVERTEXATTRIBL3I64VNVPROC, glVertexAttribL3i64vNV);
GLEXT_PROC(PFNGLVERTEXATTRIBL4I64VNVPROC, glVertexAttribL4i64vNV);
GLEXT_PROC(PFNGLVERTEXATTRIBL1UI64NVPROC, glVertexAttribL1ui64NV);
GLEXT_PROC(PFNGLVERTEXATTRIBL2UI64NVPROC, glVertexAttribL2ui64NV);
GLEXT_PROC(PFNGLVERTEXATTRIBL3UI64NVPROC, glVertexAttribL3ui64NV);
GLEXT_PROC(PFNGLVERTEXATTRIBL4UI64NVPROC, glVertexAttribL4ui64NV);
GLEXT_PROC(PFNGLVERTEXATTRIBL1UI64VNVPROC, glVertexAttribL1ui64vNV);
GLEXT_PROC(PFNGLVERTEXATTRIBL2UI64VNVPROC, glVertexAttribL2ui64vNV);
GLEXT_PROC(PFNGLVERTEXATTRIBL3UI64VNVPROC, glVertexAttribL3ui64vNV);
GLEXT_PROC(PFNGLVERTEXATTRIBL4UI64VNVPROC, glVertexAttribL4ui64vNV);
GLEXT_PROC(PFNGLGETVERTEXATTRIBLI64VNVPROC, glGetVertexAttribLi64vNV);
GLEXT_PROC(PFNGLGETVERTEXATTRIBLUI64VNVPROC, glGetVertexAttribLui64vNV);
GLEXT_PROC(PFNGLVERTEXATTRIBLFORMATNVPROC, glVertexAttribLFormatNV);

// GL_NV_vertex_buffer_unified_memory
GLEXT_PROC(PFNGLBUFFERADDRESSRANGENVPROC, glBufferAddressRangeNV);
GLEXT_PROC(PFNGLVERTEXFORMATNVPROC, glVertexFormatNV);
GLEXT_PROC(PFNGLNORMALFORMATNVPROC, glNormalFormatNV);
GLEXT_PROC(PFNGLCOLORFORMATNVPROC, glColorFormatNV);
GLEXT_PROC(PFNGLINDEXFORMATNVPROC, glIndexFormatNV);
GLEXT_PROC(PFNGLTEXCOORDFORMATNVPROC, glTexCoordFormatNV);
GLEXT_PROC(PFNGLEDGEFLAGFORMATNVPROC, glEdgeFlagFormatNV);
GLEXT_PROC(PFNGLSECONDARYCOLORFORMATNVPROC, glSecondaryColorFormatNV);
GLEXT_PROC(PFNGLFOGCOORDFORMATNVPROC, glFogCoordFormatNV);
GLEXT_PROC(PFNGLVERTEXATTRIBFORMATNVPROC, glVertexAttribFormatNV);
GLEXT_PROC(PFNGLVERTEXATTRIBIFORMATNVPROC, glVertexAttribIFormatNV);
GLEXT_PROC(PFNGLGETINTEGERUI64I_VNVPROC, glGetIntegerui64i_vNV);

// GL_NV_memory_attachment
GLEXT_PROC(PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC, glGetMemoryObjectDetachedResourcesuivNV);
GLEXT_PROC(PFNGLRESETMEMORYOBJECTPARAMETERNVPROC, glResetMemoryObjectParameterNV);
GLEXT_PROC(PFNGLTEXATTACHMEMORYNVPROC, glTexAttachMemoryNV);
GLEXT_PROC(PFNGLBUFFERATTACHMEMORYNVPROC, glBufferAttachMemoryNV);
GLEXT_PROC(PFNGLTEXTUREATTACHMEMORYNVPROC, glTextureAttachMemoryNV);
GLEXT_PROC(PFNGLNAMEDBUFFERATTACHMEMORYNVPROC, glNamedBufferAttachMemoryNV);

// GL_NV_mesh_shader
GLEXT_PROC(PFNGLDRAWMESHTASKSNVPROC, glDrawMeshTasksNV);
GLEXT_PROC(PFNGLDRAWMESHTASKSINDIRECTNVPROC, glDrawMeshTasksIndirectNV);
GLEXT_PROC(PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC, glMultiDrawMeshTasksIndirectNV);
GLEXT_PROC(PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC, glMultiDrawMeshTasksIndirectCountNV);

// GL_NV_scissor_exclusive
GLEXT_PROC(PFNGLSCISSOREXCLUSIVENVPROC, glScissorExclusiveNV);
GLEXT_PROC(PFNGLSCISSOREXCLUSIVEARRAYVNVPROC, glScissorExclusiveArrayvNV);

// GL_NV_shading_rate_image
GLEXT_PROC(PFNGLBINDSHADINGRATEIMAGENVPROC, glBindShadingRateImageNV);
GLEXT_PROC(PFNGLGETSHADINGRATEIMAGEPALETTENVPROC, glGetShadingRateImagePaletteNV);
GLEXT_PROC(PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC, glGetShadingRateSampleLocationivNV);
GLEXT_PROC(PFNGLSHADINGRATEIMAGEBARRIERNVPROC, glShadingRateImageBarrierNV);
GLEXT_PROC(PFNGLSHADINGRATEIMAGEPALETTENVPROC, glShadingRateImagePaletteNV);
GLEXT_PROC(PFNGLSHADINGRATESAMPLEORDERNVPROC, glShadingRateSampleOrderNV);
GLEXT_PROC(PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC, glShadingRateSampleOrderCustomNV);

// ---------------------------------------------------------------------------------
// OVR
// ---------------------------------------------------------------------------------

// GL_OVR_multiview
GLEXT_PROC(PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC, glFramebufferTextureMultiviewOVR);

// ---------------------------------------------------------------------------------
// KHR
// ---------------------------------------------------------------------------------

// GL_KHR_blend_equation_advanced
GLEXT_PROC(PFNGLBLENDBARRIERKHRPROC, glBlendBarrierKHR);

// GL_KHR_parallel_shader_compile
GLEXT_PROC(PFNGLMAXSHADERCOMPILERTHREADSKHRPROC, glMaxShaderCompilerThreadsKHR);

// ---------------------------------------------------------------------------------
// AMD
// ---------------------------------------------------------------------------------

// GL_AMD_performance_monitor
GLEXT_PROC(PFNGLGETPERFMONITORGROUPSAMDPROC, glGetPerfMonitorGroupsAMD);
GLEXT_PROC(PFNGLGETPERFMONITORCOUNTERSAMDPROC, glGetPerfMonitorCountersAMD);
GLEXT_PROC(PFNGLGETPERFMONITORGROUPSTRINGAMDPROC, glGetPerfMonitorGroupStringAMD);
GLEXT_PROC(PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC, glGetPerfMonitorCounterStringAMD);
GLEXT_PROC(PFNGLGETPERFMONITORCOUNTERINFOAMDPROC, glGetPerfMonitorCounterInfoAMD);
GLEXT_PROC(PFNGLGENPERFMONITORSAMDPROC, glGenPerfMonitorsAMD);
GLEXT_PROC(PFNGLDELETEPERFMONITORSAMDPROC, glDeletePerfMonitorsAMD);
GLEXT_PROC(PFNGLSELECTPERFMONITORCOUNTERSAMDPROC, glSelectPerfMonitorCountersAMD);
GLEXT_PROC(PFNGLBEGINPERFMONITORAMDPROC, glBeginPerfMonitorAMD);
GLEXT_PROC(PFNGLENDPERFMONITORAMDPROC, glEndPerfMonitorAMD);
GLEXT_PROC(PFNGLGETPERFMONITORCOUNTERDATAAMDPROC, glGetPerfMonitorCounterDataAMD);

// GL_AMD_framebuffer_multisample_advanced
GLEXT_PROC(PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC, glRenderbufferStorageMultisampleAdvancedAMD);
GLEXT_PROC(PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC, glNamedRenderbufferStorageMultisampleAdvancedAMD);

// ---------------------------------------------------------------------------------
// MESA
// ---------------------------------------------------------------------------------

// GL_MESA_framebuffer_flip_y
GLEXT_PROC(PFNGLFRAMEBUFFERPARAMETERIMESAPROC, glFramebufferParameteriMESA);
GLEXT_PROC(PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC, glGetFramebufferParameterivMESA);

#endif // GLEXT_PROC

// ---------------------------------------------------------------------------------
// OpenGL Core Extensions
// http://www.opengl.org/wiki/History_of_OpenGL
// ---------------------------------------------------------------------------------

#ifdef CORE_EXTENSION

// OpenGL 1.0 (1992)

// OpenGL 1.1 (1997)
CORE_EXTENSION(110, vertex_array)
CORE_EXTENSION(110, polygon_offset)
CORE_EXTENSION(110, blend_logic_op)
CORE_EXTENSION(110, texture)
CORE_EXTENSION(110, copy_texture)
CORE_EXTENSION(110, subtexture)
CORE_EXTENSION(110, texture_object)

// OpenGL 1.2 (1998)
CORE_EXTENSION(120, texture3D)
CORE_EXTENSION(120, bgra)
CORE_EXTENSION(120, packed_pixels)
CORE_EXTENSION(120, rescale_normal)
CORE_EXTENSION(120, separate_specular_color)
CORE_EXTENSION(120, texture_edge_clamp)
CORE_EXTENSION(120, texture_lod)
CORE_EXTENSION(120, draw_range_elements)

// OpenGL 1.2 Imaging subset (optional)
CORE_EXTENSION(120, color_table)
CORE_EXTENSION(120, color_subtable)
CORE_EXTENSION(120, convolution)
CORE_EXTENSION(120, convolution_border_modes)
CORE_EXTENSION(120, color_matrix)
CORE_EXTENSION(120, histogram)
CORE_EXTENSION(120, blend_color)
CORE_EXTENSION(120, blend_minmax)
CORE_EXTENSION(120, blend_subtract)

// OpenGL 1.3 (2001)
CORE_EXTENSION(130, texture_compression)
CORE_EXTENSION(130, texture_cube_map)
CORE_EXTENSION(130, multisample)
CORE_EXTENSION(130, multitexture)
CORE_EXTENSION(130, texture_env_add)
CORE_EXTENSION(130, texture_env_combine)
CORE_EXTENSION(130, texture_env_dot3)
CORE_EXTENSION(130, texture_border_clamp)
CORE_EXTENSION(130, transpose_matrix)

// OpenGL 1.4 (2002)
CORE_EXTENSION(140, generate_mipmap)
CORE_EXTENSION(140, blend_square)
CORE_EXTENSION(140, depth_texture)
CORE_EXTENSION(140, shadow)
CORE_EXTENSION(140, fog_coord)
CORE_EXTENSION(140, multi_draw_arrays)
CORE_EXTENSION(140, point_parameters)
CORE_EXTENSION(140, secondary_color)
CORE_EXTENSION(140, blend_func_separate)
CORE_EXTENSION(140, stencil_wrap)
CORE_EXTENSION(140, texture_env_crossbar)
CORE_EXTENSION(140, texture_lod_bias)
CORE_EXTENSION(140, texture_mirrored_repeat)
CORE_EXTENSION(140, window_pos)

// OpenGL 1.5 (2003)
CORE_EXTENSION(150, vertex_buffer_object)
CORE_EXTENSION(150, occlusion_query)
CORE_EXTENSION(150, shadow_funcs)

// OpenGL 2.0 (2004)
CORE_EXTENSION(200, shader_objects)
CORE_EXTENSION(200, vertex_shader)
CORE_EXTENSION(200, fragment_shader)
CORE_EXTENSION(200, shading_language_100)
CORE_EXTENSION(200, draw_buffers)
CORE_EXTENSION(200, texture_non_power_of_two)
CORE_EXTENSION(200, point_sprite)
CORE_EXTENSION(200, separate_stencil)
CORE_EXTENSION(200, stencil_two_side)
CORE_EXTENSION(200, blend_equation_separate)

// OpenGL 2.1 (2006)
CORE_EXTENSION(210, pixel_buffer_object)
CORE_EXTENSION(210, texture_sRGB)

// OpenGL 3.0 (2008)
CORE_EXTENSION(300, framebuffer_object)
CORE_EXTENSION(300, vertex_array_object)
CORE_EXTENSION(300, conditional_render)
CORE_EXTENSION(300, color_buffer_float)
CORE_EXTENSION(300, depth_buffer_float)
CORE_EXTENSION(300, texture_float)
CORE_EXTENSION(300, packed_float)
CORE_EXTENSION(300, texture_shared_exponent)
CORE_EXTENSION(300, half_float)
CORE_EXTENSION(300, half_float_pixel)
CORE_EXTENSION(300, texture_integer)
CORE_EXTENSION(300, texture_array)
CORE_EXTENSION(300, draw_buffers2)
CORE_EXTENSION(300, texture_compression_rgtc)
CORE_EXTENSION(300, transform_feedback)
CORE_EXTENSION(300, framebuffer_sRGB)
CORE_EXTENSION(300, map_buffer_range)
CORE_EXTENSION(300, flush_buffer_range)
CORE_EXTENSION(300, framebuffer_blit)
CORE_EXTENSION(300, framebuffer_multisample)
CORE_EXTENSION(300, packed_depth_stencil)
CORE_EXTENSION(300, gpu_shader4)
CORE_EXTENSION(300, texture_r)
CORE_EXTENSION(300, texture_rg)

// OpenGL 3.1 (2009)
CORE_EXTENSION(310, uniform_buffer_object)
CORE_EXTENSION(310, draw_instanced)
CORE_EXTENSION(310, copy_buffer)
CORE_EXTENSION(310, primitive_restart)
CORE_EXTENSION(310, texture_buffer_object)
CORE_EXTENSION(310, texture_rectangle)
CORE_EXTENSION(310, texture_snorm)

// OpenGL 3.2 (2009)
CORE_EXTENSION(320, vertex_array_bgra)
CORE_EXTENSION(320, draw_elements_base_vertex)
CORE_EXTENSION(320, fragment_coord_conventions)
CORE_EXTENSION(320, provoking_vertex)
CORE_EXTENSION(320, seamless_cube_map)
CORE_EXTENSION(320, texture_multisample)
CORE_EXTENSION(320, depth_clamp)
CORE_EXTENSION(320, sync)
CORE_EXTENSION(320, geometry_shader4)

// OpenGL 3.3 (2010)
CORE_EXTENSION(330, shader_bit_encoding)
CORE_EXTENSION(330, blend_func_extended)
CORE_EXTENSION(330, explicit_attrib_location)
CORE_EXTENSION(330, occlusion_query2)
CORE_EXTENSION(330, sampler_objects)
CORE_EXTENSION(330, texture_rgb10_a2ui)
CORE_EXTENSION(330, texture_swizzle)
CORE_EXTENSION(330, timer_query)
CORE_EXTENSION(330, instanced_arrays)
CORE_EXTENSION(330, vertex_type_2_10_10_10_rev)

// OpenGL 4.0 (2010)
CORE_EXTENSION(400, texture_query_lod)
CORE_EXTENSION(400, gpu_shader5)
CORE_EXTENSION(400, gpu_shader_fp64)
CORE_EXTENSION(400, shader_subroutine)
CORE_EXTENSION(400, texture_gather)
CORE_EXTENSION(400, draw_indirect)
CORE_EXTENSION(400, sample_shading)
CORE_EXTENSION(400, tessellation_shader)
CORE_EXTENSION(400, texture_buffer_object_rgb32)
CORE_EXTENSION(400, texture_cube_map_array)
CORE_EXTENSION(400, transform_feedback2)
CORE_EXTENSION(400, transform_feedback3)
CORE_EXTENSION(400, draw_buffers_blend)

// OpenGL 4.1 (2010)
CORE_EXTENSION(410, get_program_binary)
CORE_EXTENSION(410, separate_shader_objects)
CORE_EXTENSION(410, ES2_compatibility)
CORE_EXTENSION(410, shader_precision)
CORE_EXTENSION(410, vertex_attrib_64bit)
CORE_EXTENSION(410, viewport_array)

// OpenGL 4.2 (2011)
CORE_EXTENSION(420, shader_atomic_counters)
CORE_EXTENSION(420, shader_image_load_store)
CORE_EXTENSION(420, texture_storage)
CORE_EXTENSION(420, transform_feedback_instanced)
CORE_EXTENSION(420, shading_language_420pack)
CORE_EXTENSION(420, base_instance)
CORE_EXTENSION(420, internalformat_query)
CORE_EXTENSION(420, compressed_texture_pixel_storage)
CORE_EXTENSION(420, shading_language_packing)
CORE_EXTENSION(420, map_buffer_alignment)
CORE_EXTENSION(420, conservative_depth)
CORE_EXTENSION(420, texture_compression_bptc)

// OpenGL 4.3 (2012)
CORE_EXTENSION(430, debug)
CORE_EXTENSION(430, arrays_of_arrays)
CORE_EXTENSION(430, clear_buffer_object)
CORE_EXTENSION(430, compute_shader)
CORE_EXTENSION(430, copy_image)
CORE_EXTENSION(430, ES3_compatibility)
CORE_EXTENSION(430, explicit_uniform_location)
CORE_EXTENSION(430, fragment_layer_viewport)
CORE_EXTENSION(430, framebuffer_no_attachments)
CORE_EXTENSION(430, internalformat_query2)
CORE_EXTENSION(430, invalidate_subdata)
CORE_EXTENSION(430, multi_draw_indirect)
CORE_EXTENSION(430, program_interface_query)
CORE_EXTENSION(430, shader_image_size)
CORE_EXTENSION(430, shader_storage_buffer_object)
CORE_EXTENSION(430, stencil_texturing)
CORE_EXTENSION(430, texture_buffer_range)
CORE_EXTENSION(430, texture_query_levels)
CORE_EXTENSION(430, texture_storage_multisample)
CORE_EXTENSION(430, texture_view)
CORE_EXTENSION(430, vertex_attrib_binding)

// OpenGL 4.4 (2013)
CORE_EXTENSION(440, buffer_storage)
CORE_EXTENSION(440, clear_texture)
CORE_EXTENSION(440, enhanced_layouts)
CORE_EXTENSION(440, multi_bind)
CORE_EXTENSION(440, query_buffer_object)
CORE_EXTENSION(440, texture_mirror_clamp_to_edge)
CORE_EXTENSION(440, texture_stencil8)
CORE_EXTENSION(440, vertex_type_10f_11f_11f_rev)
CORE_EXTENSION(440, robust_buffer_access_behavior)
CORE_EXTENSION(440, robustness_isolation)

// OpenGL 4.5 (2014)
CORE_EXTENSION(450, direct_state_access)
CORE_EXTENSION(450, context_flush_control)
CORE_EXTENSION(450, robustness)
CORE_EXTENSION(450, clip_control)
CORE_EXTENSION(450, cull_distance)
CORE_EXTENSION(450, ES3_1_compatibility)
CORE_EXTENSION(450, conditional_render_inverted)
CORE_EXTENSION(450, derivative_control)
CORE_EXTENSION(450, get_texture_sub_image)
CORE_EXTENSION(450, shader_texture_image_samples)
CORE_EXTENSION(450, texture_barrier)

// OpenGL 4.6 (2017)
CORE_EXTENSION(460, gl_spirv)
CORE_EXTENSION(460, spirv_extensions)
CORE_EXTENSION(460, shader_draw_parameters)
CORE_EXTENSION(460, indirect_parameters)
CORE_EXTENSION(460, pipeline_statistics_query)
CORE_EXTENSION(460, transform_feedback_overflow_query)
CORE_EXTENSION(460, texture_filter_anisotropic)
CORE_EXTENSION(460, polygon_offset_clamp)
CORE_EXTENSION(460, no_error)
CORE_EXTENSION(460, shader_atomic_counter_ops)
CORE_EXTENSION(460, shader_group_vote)

#endif // CORE_EXTENSION
